And it's because of dumb non-programmers that we have 12am immediately following 11pm. If we were to, instead, recognize the beginning/middle of the day as 0, the am/pm transitions would be sensible.
Starting at 0 is almost always correct, teaching people to start counting at 1 isn't. Why do we continually come up with convoluted workarounds simply because we educate children incorrectly?