4 ms·
> Build your time library on (un)signed 64 bit integers representing the number of nanoseconds since the utc epoch. You poor sweet summer child. Has no one tol
by earthboundkid 7y ago
> Build your time library on (un)signed 64 bit integers representing the number of nanoseconds since the utc epoch.
You poor sweet summer child. Has no one told you about the leap seconds yet? Unix time is not the number of seconds since epoch. It deliberately excludes leap seconds, which happen unpredictably whenever scientists measure the Earth as having spun at a different enough speed for long enough.
Time is fucked on every level:
- Philosophical: What is time? We just don't know.
- Physical: Turns out there is no such thing as simultaneity, and time flows differently at different locations. Time may be discrete at the Planck level, but we don't really know yet.
- Cosmological: The Earth does not rotate at a constant speed, the Earth does not orbit the Sun at a fractional component of its rotation, and the Moon does not orbit at even ratio either.
- Historical: Humans have not used time or calendars consistently.
- Notational: Some time notations are ambiguous (e.g. during daylight savings transitions) and others are skipped.
- Regional: Different regions use subtly different clocks and calendars.
- Political: Different political actors choose to change time whenever they feel like it with little or no warning.
- Religious: Many religions come with their own system for timekeeping, and people don't like when outsiders impose other systems.
- perl4ever 7y ago"You poor sweet summer child" haha. Google is way ahead of you and your "leap seconds". "Since 2008, instead of applying leap seconds to our servers using clock steps, we have "smeared" the extra second across the hours before and after each leap. The leap smear applies to all Google services, including all our APIs." https://developers.google.com/time/smear https://developers.google.com/time/smear ...now write code to convert Google time to any other random type of time.
- deleted 7y ago[deleted]
- c3534l 7y agoBoth https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd... and https://en.wikipedia.org/wiki/Unix_time https://en.wikipedia.org/wiki/Unix_time indicate that leap seconds are not included in Unix time as seconds-since-the-epoch. Leap seconds are included in UTC, and thus the Unix time appears to skip a second relative to UTC.
- mytailorisrich 7y ago> Unix time is not the number of seconds since epoch In fairness, he said to count the number of seconds since the Epoch. That is independent of UTC. That means using e.g. TAI. Unix time also ignores leap seconds since it counts the number of seconds actually elapsed.
- labawi 7y ago> Unix time also ignores leap seconds hence it counts the number of seconds that would have elapsed, if they didn't exist. In effect, it's timescale has time that never happened, and time that happened twice.
- deleted 7y ago[deleted]
- zokier 7y ago> Unix time is not the number of seconds since epoch I assumed that is (part of) why he ended up wanting to build his own. The way UNIX time handles leap seconds was arguably a mistake, GPS (and Galileo) time does it right; have the leap second information in a separate field. So as a time scale I imagine OPs one would be similar to GPS but with different epoch. Of course everyone loves having informally defined ad-hoc timescales around