Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Strictly speaking Unix time is monotonic, because it counts integer number of seconds and it does not go backwards, it only repeats during leap seconds.


POSIX does define "the amount of time (in seconds and nanoseconds) since the Epoch", for the output of clock_gettime() with CLOCK_REALTIME [0]. That "amount of time" must be stopped or smeared or go backward in some way when it reaches a leap second. This isn't the 80s, we have functions that interact with Unix time at sub-second precision.

[0] https://pubs.opengroup.org/onlinepubs/9799919799/functions/c...


This feels like semantics. If a counter repeats a value, it's effectively gone backwards and by definition is not monatomic.

A delta between two monatomic values should always be non-negative. This is not true for Unix time.


“Monotonic” means non-decreasing (or non-increasing if you’re going the other way). Values are allowed to repeat. The term you’re looking for is “strictly increasing.”


I guess this hinges on whether you think Unix time is an integer or a float. If you think it's just an integer, then yes, you can't get a negative delta.

If, however, you think it's a float, then you can.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: