No offending there, this is just for my English practice.
------------------------
Although I've referred to some of articles but still was confused. Today I asked around in a chat room about this question, and finally I figured out 12-hour system. I will try to write down it here according to my personal understanding for your reference.
Let's have a look at the formation of a time first:
"12:00a.m. Feb. 2"
We can see the above information consist of two blocks, the time block and the date block. We all must be quite clear with the date block. In this case, we are on the day February the second no doubt.
For the other block, the time block, it consists of two parts as well. The time part, that is "12:00", and "a.m." part. The "a.m." is an abbreviation of the "ante merdiane". Let me make an introduce before we go further. In 12-hour time system, a day is separated into two time periods: the first period is from midnight to noon, which is indicated by "a.m."; the second period is from noon to midnight, which is indicated by "p.m."
As one day is 24 hours long, we are either in the period of "a.m." or "p.m.". Both of them are all indicate the CURRENT status of which 12-hour we are in. This is what "a.m." or "p.m." tells.
The other part of the time block is "12:00". This is a bad guy, really bad ;-) Beforehand, I'd like to ask if you may find "00:00" in 12-hour time system? Or, have you ever heard this kind of expression from anyone who is living within a 12-hour time system country or territory? You may find a truth that there's no 00:00 in 12-hour time system. Why? Because 12:00 means how long the time has passed till the current point of time. For instance, Feb. 2 8:00a.m., is it eight o'clock in the morning on Feb. 2? Yes, it is. BUT, actually the true description should be: "In the morning on Feb. 2, the time of today has been passed for 8 hours from the midnight till the current point of time."
Weird?! Of course, it is! The time value in the 12-hour time system try to tell you how long the time has passed by, not the exact point of time. Therefore, you may not find "00:00" in such time system. Because, 00:00 makes no sense to describe the time elapsed.
Then, I guess a big question mark comes to you, how can you describe Feb. 2 00:00? Right, it should be "Feb. 2 12:00a.m."
Whaaaaaat???? Yes, it is not my misspelling. As I said before, the time block try to describe a time elapsed, in the case "Feb. 1 11:59p.m.", you may say: Oh, we are on Feb. 1, and now is in the period of second half of the day. Hmmm, the elapsed time should be 11 hours and 59 minutes. Okay, that's fine. but what will happen in the next minute? As the date block and "a.m./p.m." are telling us the status of current point of time. Thus, when the next minute comes, these two blocks should go forward as "Feb. 2" and "a.m." - We are on the new day "Feb. 2", and now we are in the first half of the day. Then, let's focus on time block. Will it be "00:00"? As we said before, there's no "00:00" indeed. Will it be "0:01"? No, of course not. we cannot add 1 minute deviation into the time system. It's incorrect! Answer is "12:00". Woooow, amazing?! How can you explain this date and time? "Feb. 2 12:00a.m."? It's quite hard to describe?"