Military time, without the mystique
Military time is not a code. It is the same day, counted once from 00 to 23 instead of twice from 12 to 12. Everything below follows from that single decision.
Why the day is counted once
A 12-hour clock needs a suffix to stay unambiguous. "Meet at 7" is a different appointment depending on whether you mean morning or evening, and the AM/PM marker that resolves it is easy to drop — in speech, in handwriting, in a radio transmission, in a log entry typed at speed.
A 24-hour clock removes the ambiguity by removing the need for the suffix. There is only one 19:00 in a day. That is the entire argument, and it is why the format survives in every setting where a misread time is expensive: hospitals, aviation, shipping, railways, server logs, and the military.
The conversion rule, stated once
For hours 00 through 12, military time and 12-hour time agree except that military time writes a leading zero: 0900 is 9:00 AM. For hours 13 through 23, subtract 12 and append PM: 1700 is 5:00 PM, 2359 is 11:59 PM. Minutes are never touched.
The only genuine exceptions are the two twelve o’clocks. 0000 is midnight and reads as 12:00 AM. 1200 is noon and reads as 12:00 PM. Everything else is mechanical.
- 0000 — midnight, 12:00 AM
- 0600 — 6:00 AM
- 1200 — noon, 12:00 PM
- 1300 — 1:00 PM
- 1800 — 6:00 PM
- 2359 — 11:59 PM, the last minute of the day
Midnight is 0000, and 2400 is a different thing
Civilian writing sometimes uses 2400 to mean midnight at the end of a day. Military practice does not: the day starts at 0000 and the last minute it contains is 2359. Writing 2400 in a record creates a time that belongs to no day, which is precisely the kind of ambiguity the format exists to prevent.
If you see 2400 in a schedule it usually means "end of day" as a boundary rather than a clock reading. Convert it to 0000 of the following day if you need an actual instant.
Military time is not UTC
These are two different ideas that get conflated because both are written with numbers instead of AM and PM. Military time is a way of writing a local time. UTC is a time zone — a reference clock the world agrees on.
1700 local is 5:00 PM where you are standing, whatever that happens to be in UTC. Aviation and the military do combine the two, appending a zone letter (1700Z, "seventeen hundred zulu"), but the four digits alone tell you nothing about the zone.
Where you will actually meet it
The format is standard in medical charting, where 0600 and 1800 replace 6 AM and 6 PM on medication schedules. It is standard in aviation and maritime operations, in train timetables across most of the world, in logistics and dispatch, and in any log file you are likely to read as a developer.
Outside the United States it is simply how clocks are written — most of Europe, Latin America, and Asia use the 24-hour clock in daily life and reserve AM/PM for English-language contexts. If you are converting because a document handed you 1700, you are in the majority of the world, not an edge case.