Sorry, why would you be “boned” if you have UTC time? Are you thinking of the case where the desired behavior is to preserve the local time, rather than the absolute time?
So many things would be fucked by a TZ change that it very rarely makes sense to consider it.
You’re making a calendar app? Fuck it…some folks are gonna get confused…solved by simply emailing your users and telling them to reschedule shit because there’s kind of a big event going on that everyone knows about and has been planning for for years. Hell in all liklihood this is probably easily solved by simply doing a mass migration of events scheduled before the TZ change.
You’re coding for nuclear weapons? Maybe consider it. But probably not.
That is to say: there are ways to solve problems without resorting to writing the most complicated bullshit code ever seen. Unless of course you work on my team - in which case you’d be right at home.
There is one big caveat to universal time:
Future dates: If you use utc here and a time zone definition changes, you’re boned. You have to store local time and offset for just this one usecase.
Store absolute time in something like Epoch (seconds since 1970-01-01) plus local time zone
Sorry, why would you be “boned” if you have UTC time? Are you thinking of the case where the desired behavior is to preserve the local time, rather than the absolute time?
Not exactly boned but it probably doesn’t make practical difference to store “local time + tzinfo timezone” than just UTC time.
Even if you store everything in UTC, you may be safe… but figuring out the local time is still convoluted and involves a trip through tzinfo.
I’m pretty sure that things like the tz database exist exactly for such a case.
So many things would be fucked by a TZ change that it very rarely makes sense to consider it.
You’re making a calendar app? Fuck it…some folks are gonna get confused…solved by simply emailing your users and telling them to reschedule shit because there’s kind of a big event going on that everyone knows about and has been planning for for years. Hell in all liklihood this is probably easily solved by simply doing a mass migration of events scheduled before the TZ change.
You’re coding for nuclear weapons? Maybe consider it. But probably not.
That is to say: there are ways to solve problems without resorting to writing the most complicated bullshit code ever seen. Unless of course you work on my team - in which case you’d be right at home.
nice word choice