mirror / busybox

BusyBox mirror
https://www.busybox.net/
Other
1.62k stars 608 forks source link

date returns incorrect ISO8601 string for UTC #24

Open ralfstx opened 4 years ago

ralfstx commented 4 years ago
BusyBox v1.31.1 () multi-call binary.
$ date -Iseconds -u
2020-04-29T08:13:30UTC

The JS library moment regards this result as Invalid date. According to https://en.wikipedia.org/wiki/ISO_8601, UTC dates should end with Z rather than UTC.

stokito commented 2 years ago

GNU date works differently and returns offset +00:00 instead:

$ date -Iseconds -u
2022-05-10T07:30:00+00:00

The same problem for -R, --rfc-email RFC 5322:

$ date -R -u
Tue, 10 May 2022 07:31:38 +0000
$ busybox date -R -u
Tue, 10 May 2022 07:31:43 UTC

Similarly for --rfc-3339:

$ date --rfc-3339=seconds -u
2022-05-10 08:36:33+00:00

But in BB the option is not supported at all.

I remember that somewhere in mailing list the problem was mentioned but still no any patch was sent.

The GNU date also must have some option to specify a timezone because sometimes you need a GMT instead of UTC

stokito commented 2 years ago

As a workaround you can explicitly specify the +FORMAT. For example to print in Date header format:

$ TZ=GMT busybox date  "+%a, %d %b %Y %H:%M:%S %Z"
Tue, 10 May 2022 08:30:52 GMT