this post was submitted on 24 Aug 2025
456 points (98.9% liked)
Programmer Humor
25958 readers
903 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
The Python won't give an accurate date here because it doesn't take into account leap years.
timedelta
marks time in days, seconds, and microseconds. It doesn't take leap years into account because the concept of years is irrelevant totimedelta
. If you need to account for leap years, you need a different API.365.25*10 would at least get you closer.
You can subtract two dates and get the exact time difference.
The comparison is somewhat awkward, because the rails example presumably produces a date, while the python one is referring to an interval of time.
Just from the meme it's not obvious which was the actual intended use, so labeling either as inaccurate requires us to make assumptions.
Personally, the concept of "10 years ago" is a bit nebulous to me. If today is February 29th, is ten years ago March 1st? Doesn't seem right. Or particularly useful.
Ruby should add 10.years.ago.today
yeah, that's pretty much why timedelta doesn't have the concept of months or years, just days and smaller units. I like it better this way.
Because what's accurate here depends on the context, and the Python example doesn't hide that from the programmer.
The same dilemma goes for month calculations: does "3 months ago" mean 90 days ago, 91.3 days ago, this many days into the target month, or this many days from the target month's end (e.g. to account for 28, 29, 30, and 31-day months)?
Does the Ruby version do that though?
I haven't got it installed to check, but seeing constants like SECONDS_PER_YEAR in the documentation makes me think it's just as bad if not worse.
https://api.rubyonrails.org/classes/ActiveSupport/Duration.html