💾 Archived View for bbs.geminispace.org › s › programming › 5197 captured on 2024-08-18 at 22:37:26. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-07-09)
-=-=-=-=-=-=-
Re: "Converting Unix timestamp to date/time"
Interesting. It seems like my way is a lot easier. Since the only weird year between 1970 and 2037 is 2000, and it happens to be a leap year, we can ignore the 100/400-year exception - it is just like the rest of the leap years. I already have days since 1970, so I can continue the calculation in days.
As noted previously, I adjust to March 1972 as the base year, to shift the leap day to the last day of a 4-year bundle. I can then divide by the number of days in such bundles, yielding number of days within the final quad as remainder.
The rest of the calculation is division by 365 to find the year within a quad (which also detects if we won the leap year lottery),
Then, to figure out the months, I go into a loop subtracting days in each month. That is the only iteration required.
2023-09-11 · 11 months ago
🚀 mbays · 2023-09-11 at 05:30:
So you plan to be part of the Y2038 problem?
🐉 gyaradong · 2023-09-11 at 06:43:
some notes:
- a country went into daylight savings and never came out
- countries and states routinely change the dates when coming into or out of daylight savings.
- a country one skipped a week or rewound a week. can't remember which.
- a small island went from one side of the international date line to the other. I think they are now beyond 12 hours forward.
I'm never touching a time library.
🦀 jeang3nie · 2023-09-11 at 15:03:
Crap, don't get me started on daylight savings time.
🚀 stack [OP] · 2023-09-11 at 17:05:
I am passing the buck to the user, of course. A variable will keep the timezone adjustment offset, and whoever cares about this will set it to the right amount.
At this point, it is very likely that I will be the only user anyway.
X
Converting Unix timestamp to date/time — Without any outside libraries. All we have is a Unix timestamp, seconds since Jan. 1, 1970. I'm looking for a minimalistic solution for my tiny nForth, but really curious if anyone has tricks up their sleeve for this kind of a task. I'm willing to ignore leap seconds for now. So far I got the time part: add timezone in seconds, divide by 86400 to get days, and use the remainder for time in seconds. The rest is trivial, dividing by 60 for minutes and 60...