Obiekt JavaScript reprezentuje moment w czasie, oparty na liczbie milisekund od epoki (1 stycznia 1970 o północy czasu UTC). Oczywiście, new Date
używa zegara środowiska, w którym jest uruchamiany, aby uzyskać tę wartość. Więc jeśli jest to w przeglądarce na moim komputerze i mój zegar jest źle ustawiony, użyje niewłaściwego czasu mojego urządzenia. *
Następnie mają dwa zestawy funkcji, za pomocą których można uzyskać informacje o tym momencie w czasie: Lokalny funkcje strefy czasowej, takie jak getHours
, , itp., oraz funkcje UTC, takie jak getUTCHours
, getUTCMonth
itd. Lokalne funkcje strefy czasowej działają w strefie czasowej środowiska. Oczywiście funkcje UTC działają w UTC.
Więc na przykład, powiedzmy, że ktoś jest w stanie Kalifornia w dniu 3 marca 2017 roku i robi to o godzinie 11:30 dokładnie czasu:
var dt = new Date();
console.log(dt.getHours()); // 11 -- e.g., 11 a.m.
console.log(dt.getUTCHours()); // 19 -- e.g., 7 p.m.
Podstawową wartość przedmiotu jest 1488569400000, ale lokalne funkcje strefy czasowej mówią nam, że jest godzina 11, a funkcje UTC mówią nam, że jest godzina dziewiąta
* (chociaż jak James Thorpe points out, spec jest a bit vague o tym, po prostu mówiąc, że używa „bieżącego czasu”, więc w teorii środowisko mogłoby zdecydować o jego użyciu serwer czasu innego niż lokalnym komputerze Ale ...)
Zauważ, że [spec] (http://www.ecma-international.org/ecma-262/6.0/#sec-date-constructor-date) jest otwarty na interpretację. Po prostu mówi "aktualny czas". Teoretycznie, implementacja może odejść do sieciowego serwera czasu, aby uzyskać właściwą wartość. W praktyce jest to czas lokalnego urządzenia. –
Czy znasz jakiś popularny język komercyjny, który * nie * po prostu robi datę syscall na lokalnym komputerze? :) –
Nie, tylko wskazując, na co pozwala specyfikacja w JavaScript. Na przykład w języku C#, [jest to wyraźnie określone] (https://msdn.microsoft.com/en-us/library/system.datetime.now (v = vs.110) .aspx), że jest to lokalny czas maszyny. –