Programming Tips - C/C++: How to convert a 24-hour time to a 12-hour time

Date: 2014sep12 Update: 2026sep23 Language: C/C++ Q. C/C++: How to convert a 24-hour time to a 12-hour time A. Its only tricky around midnight.
// Convert a 24-hour time to a 12-hour time // (eg 13 becomes 1pm) int Hour24ToHour12(const int hour24) { int hour = hour24; if (hour == 0) hour = 12; // at 30 minutes into the day we want 12:30 not 00:30 if (hour > 12) hour -= 12; return hour; }
Or if you want "am" / "pm" also
void Hour24ToHour12Str(const int hour24, char *buf, const size_t size) { int hour12 = Hour24ToHour12(hour24); char part = (hour24 >= 12) ? 'p' : 'a'; _snprintf(buf, size, "%d%cm", hour12, part); }
Full Example:
#include <stdio.h> // (Functions from above go here) int main() { char buf[100]; for (int h = 0; h <= 23; h++) { Hour24ToHour12Str(h, buf, sizeof(buf)); printf("hour24=%d hour12=%s\n", h, buf); } }
Output:
hour24=0 hour12=12am hour24=1 hour12=1am hour24=2 hour12=2am hour24=3 hour12=3am hour24=4 hour12=4am hour24=5 hour12=5am hour24=6 hour12=6am hour24=7 hour12=7am hour24=8 hour12=8am hour24=9 hour12=9am hour24=10 hour12=10am hour24=11 hour12=11am hour24=12 hour12=12pm hour24=13 hour12=1pm hour24=14 hour12=2pm hour24=15 hour12=3pm hour24=16 hour12=4pm hour24=17 hour12=5pm hour24=18 hour12=6pm hour24=19 hour12=7pm hour24=20 hour12=8pm hour24=21 hour12=9pm hour24=22 hour12=10pm hour24=23 hour12=11pm