To think that of all things I could have picked to build, it was something centered around time. Having worked on a sunrise/sunset and moonrise/moonset calculator, you’d think that I would have learned my lesson.
Time is difficult because there’s always exceptions to the rule, and some specifics are unclear on first thought.
Does midnight belong to the beginning of the day, or the end? Is the end date and time of an all day event inclusive or exclusive? It ends up that luckily, there were plenty of smart people that thought about all of this decades before I came about, but they like to write in a boring prose, in specs like ISO8601.
By the way, midnight belongs to the beginning of the day, and all day events have exclusive end times. However, that’s not what people mean when they say they’re going to iceland from october 18th to october 22nd. When people say that, the date is inclusive. Aye.
And do you store all times in UTC? Depends on the application. Throw in time zones, there’s even more confusion, not to mention taking day light savings into account. And if you really want to get nitpicky, there’s always leap years and leap seconds to think about.
Wilhem has built Annologger, a tool that lets people worship your dentist appointments.