The Unix timestamp given by:
int(time.time())
gives the number of seconds elapsed since 01/01/1970, without leap-seconds.
Just out of curiosity, how to get the true number of seconds elapsed since this date, leap-seconds included? (i.e. the distance between these two events on a time axis)
Notes:
Example: the timestamp range 867715190.000 .. 867715202.000
represents a "real-life duration" of 13 seconds (measured with a timer) because there was a leap-second this day of 1997, whereas the Unix timestamp has only increased of +12.
Example 2: the real-life time elapsed between 1/1/1970 and 1/1/2020 (12 leap-years in this 50-year interval) is (365*50+12)*24*3600 + number_leap_seconds
and not (365*50+12)*24*3600
. But we see datetime.datetime.utcfromtimestamp((365*50+12)*24*3600)
is 2020-01-01 00:00:00
, so obviously, the leap-seconds haven't been taken in consideration.
Linked to What does python return on the leap second, and Unix time and leap seconds
The number of SI seconds between any two UTC timestamps since 1972-01-01 requires access to the list of leap seconds which have been introduced into UTC. This list is available as part of the IANA tzdata distribution and it can also be obtained from other sources.
Caution is required because the number of SI seconds between what was known as 1970-01-01 and 1972-01-01 is 2x365x24x60x60 + 1.999918 SI seconds because at 1970 the official time was determined not by cesium atoms but by actually measuring the rotation of the earth, so the official seconds were mean solar seconds not SI seconds.