Comment 20 for bug 1824088

Revision history for this message
Magnus Jonsson (kmjonsson) wrote :

The interesting about the code is that it always only treat the timestamp of the file as "YYYY-MM-DD" and nothing else (this also includes "now").

The code has functions for allowing the interval to be set down to 1s but is does not mean anything to the outcome of the script as it always looks for complete day(s).

I can only guess that the code might have has some old reference where the script (or an other script) did something else.

As of the output of "date +%s" it is dependent of the timezone when used with the --date command.

It kind of looks like the "date" is inputed in the local timezone rather witch will make epoch time drift dependent of TZ.

# Bionic
$ TZ=UTC0 date --date="2020-01-01" +%s
1577836800
$ TZ=CET date --date="2020-01-01" +%s
1577833200

Using "date -u" will also fix this behaviour of date.

$ TZ=UTC date -u --date="2020-01-01" +%s
1577836800
$ TZ=CET date -u --date="2020-01-01" +%s
1577836800

An easy fix for the original problem would be add the "-u" option to the date commands in the script:

stamp=$(date -u --date="$(date -r "$stamp_file" --iso-8601)" +%s 2>/dev/null)
now=$(date -u --date="$(date --iso-8601)" +%s 2>/dev/null)