You're Wrong About Dates – and Your Code Is Lying to You
1–10 of 22 posts
Re: You're Wrong About Dates – and Your Code Is Lying to You
#2Re: You're Wrong About Dates – and Your Code Is Lying to You
#3Re: You're Wrong About Dates – and Your Code Is Lying to You
#4When you need to be precise, you specify a time and a zone.
When your application has users in different geographies, you need to be precise.
Displaying the date attached to a time is a presentational convenience. Only the time is real.
Re: You're Wrong About Dates – and Your Code Is Lying to You
#5What day is it at 23:59:59.500 then?
You're wrong about intervals!
Re: You're Wrong About Dates – and Your Code Is Lying to You
#6I’m sorry, I just can’t get past this awful hyperbolic AI drivel.
Re: You're Wrong About Dates – and Your Code Is Lying to You
#7And then there are cultural differences. Do weeks start on a Sunday or a Monday? People wielding different calendars (Chinese new year is not on the 1st of January). So what is the beginning of the year is dependent on where you are as well.
If you are not localizing your dates before doing the checks that the author is proposing, it's probably wrong. This stuff is complicated for good reasons.
Anyway, store UTC times. Deal with making it look pretty and culturally & geographically appropriate in your UI. You shouldn't have to update your database just because the user took a plane to the other side of the planet.
Anyway, intervals and range checks are pretty easy to do with decent libraries. I like Kotlin and Java's way of using Durations for arbitrary time intervals. Kotlin's version of that supports operators. And has useful extension functions. And a thing called LocalDate which is a date without the time part, exactly like the author proposes. There's also LocalDateRange, which you can use to represent intervals. There's no LocalDateTimeRange equivalent for that. But that's where you'd switch to instants and durations probably.
Relative date and time expressions are surprisingly hard. A little known feature in Elasticsearch is that somebody at some point hacked in a date math thing that allows you to specify "now-2d" and "now+7d" as a valid input for range queries on dates. Surprisingly hard to do more complicated expressions and parse them correctly. I had a go at that problem at some point. Cron parsers are tricky for the same reason. And there are a few dialects of that to add some features that people needed.
There's a rich history of people having tried a whole bunch of things with times and dates.
Re: You're Wrong About Dates – and Your Code Is Lying to You
#8> This isn’t just “nicer syntax” — it’s a fundamental shift in how your software thinks . I’m sorry, I just can’t get past this awful hyperbolic AI drivel.
Re: You're Wrong About Dates – and Your Code Is Lying to You
#9For example, this lib makes the assumption that years and months have a fixed length, e.g. date(2024Q2) - date(2024Q1) = 3 months
Re: You're Wrong About Dates – and Your Code Is Lying to You
#10Eg, in Python
year = int
month = str (yyyy-mm)
day = naive date
exact moment = timezone aware datetime