this post was submitted on 14 Dec 2023
220 points (95.8% liked)

Programmer Humor

32559 readers
637 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] tias@discuss.tchncs.de 3 points 11 months ago* (last edited 11 months ago) (1 children)

I feel like this is a solved and simple problem as long as there are no relativistic effects. Just make sure t1 and t2 are represented as seconds since a known reference time, e.g. Unix epoch, and make sure that measure is accurate. You don't need to bring the Gregorian calendar into it, use TAI represented as an integer.

[–] jol@discuss.tchncs.de 3 points 11 months ago (1 children)

Until you need to decide how many months are between t1 and t2, and then all answers are wrong.

[–] tias@discuss.tchncs.de 2 points 11 months ago* (last edited 11 months ago)

To do that you first need to choose a calendar and a time zone, then convert to that representation. It can be done, but you need a good implementation that understands the entire history of what has transpired w.r.t. to date conventions in that location and culture. For timestamps in the future it is impossible to do correctly, since you can't know how date conventions will change in the future.

However, I should add that as far as mathematical operations go, calculating the number of months between t1 and t2 is an entirely different thing than the duration of time that passed between those timestamps. Even if it is expressed similarly in the English language, semantically it's something else. It's like asking "how many kilometers did your car go" vs "how many houses did the car pass on the way".