Dlaczego rok na tym znaczniku czasu ISO nie jest rokiem 2019?

32

W przypadku prostej aplikacji używam do testowania potoku devops, wyświetlam czas rozpoczęcia kompilacji na stronie głównej. Na mojej maszynie programistycznej wydrukowany jest rok znacznika czasu ISO-8601, którego spodziewam się, 2019 r. (W szczególności „2019-09-12T20: 11: 00.000Z”). Gdy ta sama baza kodu jest budowana przy użyciu AWS CodeBuild, znacznik czasu ISO-8601 wygląda następująco: „+ 051668-02-09T08: 09: 32.000Z”. Co to jest „+051668”? Przypuszczam, że to rok; Myślę, że to rok reprezentowany przez inny kalendarz. Myśli?

AWS CodeBuild ustawia tę zmienną środowiskową dla każdej kompilacji (CODEBUILD_START_TIME). Buduję z ich najnowszym, domyślnym kontenerem Ubuntu (v2.0).

trycrmr
źródło
1
@ AuxTaco wow, zgadnij, czy to źle / niekompletnie? i.imgur.com/LgnmacQ.png , usunąłem mój komentarz
hanshenrik
1
@hanshenrik Ta gramatyka w ogóle nie pozwala na pięciocyfrowe lata. Z wahaniem stwierdzam, że to nie tak , ponieważ wydłużone lata „są dozwolone tylko za obopólną zgodą partnerów w zakresie wymiany informacji”.
AuxTaco

Odpowiedzi:

66

Większość hitów Google pokazuje, że CODEBUILD_START_TIME jest reprezentowany jako liczba milisekund od 1970 roku. Podejrzewam, że gdzieś w twoim kodzie traktujesz to tak, jakby to były sekundy.

Jeśli zmienisz +051668-02-09T08:09:32.000Zna sekundy, otrzymasz 1568320819772. Jeśli podzielisz to + przez 1000, otrzymasz, 1568320819a następnie przekształcisz z powrotem w czytelny dla człowieka czas, który otrzymasz September 12, 2019 8:40:19.

Zoredache
źródło
4
Tak, dane testowe były uniksowym znacznikiem czasu w kilka sekund! Myślałem, że złapałem ten znacznik czasu bezpośrednio z dzienników CodeBuild, ale nie sądzę.
trycrmr
9
Złe dokumenty też; Amazon po prostu mówi „czas rozpoczęcia kompilacji” 😒
Lekkość
4
Dostarczyłem informacji zwrotnych na temat dokumentów, aby bardziej precyzyjnie określić znacznik czasu, klikając link w prawym dolnym rogu docs.aws.amazon.com/codebuild/latest/userguide/ ...
trycrmr