Obiekty daty - Date
Jak utworzyć obiekt daty i czasu?
- Aktualna data i czas - Date
Jak pobrać aktualną datę i czas?
- Tworzenie obiektu daty - new Date
Jak utworzyć obiekt przechowujący datę i czas?
- Przekształcanie tekstu na datę - parse
Jak przekształcić datę i czas w formie tekstowej na liczbę milisekund od północy 1 stycznia 1970 roku?
- Konwersja daty na milisekundy - UTC
Jak przekształcić podaną datę na liczbę milisekund od północy 1 stycznia 1970 roku?
- Aktualny czas w milisekundach - now
Jak pobrać aktualną datę i czas w formie liczby milisekund, które upłynęły od północy 1 stycznia 1970 roku?
Aktualna data i czas - Date
Jak pobrać aktualną datę i czas?
Date()
- Wartość:
String
- aktualna data i czas
Działa identycznie jak konstrukcja: new Date().toString()
, tzn. zwraca aktualną datę i czas w postaci tekstowej.
Przykład Date
Date(); // np.: "Sat Jan 04 2014 17:38:21 GMT+0100"
Tworzenie obiektu daty - new Date
Jak utworzyć obiekt przechowujący datę i czas?
new Date() new Date(value) new Date(year, month) new Date(year, month, date) new Date(year, month, date, hours) new Date(year, month, date, hours, minutes) new Date(year, month, date, hours, minutes, seconds) new Date(year, month, date, hours, minutes, seconds, ms)
- Parametry:
String|Number
value - data i czas w postaci tekstowej (w formacie zgodnym z Date.parse) albo liczba milisekund od północy 1 stycznia 1970 w strefie czasowej południka zerowegoNumber
year - rok (wartości z zakresu 0...99 oznaczają lata od 1900 do 1999)Number
month - miesiąc z zakresu 0...11Number
date - dzień miesiąca z zakresu 1...31 (domyślnie: 1)Number
hours - godzina z zakresu 0...23 (domyślnie: 0)Number
minutes - minuta z zakresu 0...59 (domyślnie: 0)Number
seconds - sekunda z zakresu 0...59 (domyślnie: 0)Number
ms - milisekunda z zakresu 0...999 (domyślnie: 0)- Wartość:
Date
- nowa instancja obiektu daty i czasu
Tworzy nową instancję obiektu, przechowującego podaną datę i czas, określoną w lokalnej strefie czasowej (chyba że zwartość argumentu value mówi inaczej). Na tak utworzonym obiekcie możemy później wykonywać inne przekształcenia.
Wszystkie parametry mogą przyjmować również wartości ujemne. Na przykład zapis new Date(2014, -1)
jest równoważny new Date(2013, 11)
. Natomiast jeżeli podamy tylko jeden argument i będzie on miał wartość ujemną, odliczanie milisekund odbędzie się wstecz od północy 1 stycznia 1970 w strefie czasowej południka zerowego.
1 sekunda zawiera 1000 milisekund.
Możemy również podawać daty spoza przewidzianego zakresu. Na przykład zapis new Date(2014, 0, 32)
jest równoważny new Date(2014, 1, 1)
. Funkcja sama przeliczy prawidłową datę, uwzględniając przy tym nawet lata przestępne.
W przypadku niepodania żadnych argumentów, zostanie utworzony nowy obiekt z aktualną datą i czasem.
Zwracam uwagę, że zapis np. new Date(2000)
nie oznacza daty 1 stycznia 2000. Wartość 2000 zostanie potraktowana jako liczba milisekund od północy 1 stycznia 1970 w strefie czasowej południka zerowego.
Uczulam również, że podanie wartości 12 jako month wcale nie oznacza grudnia, ale styczeń następnego roku.
Aby utworzyć obiekt daty tylko na podstawie roku, należy wpisać go tekstowo: new Date("2000")
. Co ciekawe, nie ma możliwości użycia argumentu year w celu ustawienia roku 0 - 99, gdyż w takim przypadku funkcja doda podaną wartość do liczby 1900 i otrzymamy rok z zakresu 1900 - 1999. Jest to w pewnym sensie pozostałość tzw. pluskwy milenijnej. Aby ustawić rok z przedziału 0 - 99, musimy się posłużyć zapisem tekstowym - np. new Date("0033-04-03")
albo dodatkowo z podaniem czasu: new Date("0033-04-03T15:00:00+02:00")
.
Zwróć uwagę, że zapisując rok tekstowo zawsze musimy użyć czterech cyfr, a w przypadku pozostałych części daty i czasu (z wyjątkiem milisekund) - dwóch cyfr.
Przykład new Date
new Date(); // np.: new Date("Sat Jan 04 2014 17:38:21 GMT+0100") new Date("2014-01-04T17:38:21+01:00"); // np.: new Date("Sat Jan 04 2014 17:38:21 GMT+0100") new Date(86400000); // np.: new Date("Fri Jan 02 1970 01:00:00 GMT+0100") new Date(-86400000); // np.: new Date("Wed Dec 31 1969 01:00:00 GMT+0100") new Date(-1, 0); // np.: new Date("Fri Jan 01 -0001 00:00:00 GMT+0100") new Date(0, 0); // np.: new Date("Mon Jan 01 1900 00:00:00 GMT+0100") new Date(99, 0); // np.: new Date("Fri Jan 01 1999 00:00:00 GMT+0100") new Date(100, 0); // np.: new Date("Fri Jan 01 0100 00:00:00 GMT+0100") new Date(2000, -1); // np.: new Date("Wed Dec 01 1999 00:00:00 GMT+0100") new Date(1999, 12); // np.: new Date("Sat Jan 01 2000 00:00:00 GMT+0100") new Date(2000, 1, -1); // np.: new Date("Sun Jan 30 2000 00:00:00 GMT+0100") new Date(2000, 1, 30); // np.: new Date("Wed Mar 01 2000 00:00:00 GMT+0100") - 2000 był rokiem przestępnym new Date(1410, 6, 15); // np.: new Date("Sun Jul 15 1410 00:00:00 GMT+0200") new Date(1410, 6, 15, 13); // np.: new Date("Sun Jul 15 1410 13:00:00 GMT+0200") new Date(1410, 6, 16, -1); // np.: new Date("Sun Jul 15 1410 23:00:00 GMT+0200") new Date(1410, 6, 14, 25); // np.: new Date("Sun Jul 15 1410 01:00:00 GMT+0200") new Date(1410, 6, 15, 13, 30); // np.: new Date("Sun Jul 15 1410 13:30:00 GMT+0200") new Date(1410, 6, 15, 13, -1); // np.: new Date("Sun Jul 15 1410 12:59:00 GMT+0200") new Date(1410, 6, 15, 13, 60); // np.: new Date("Sun Jul 15 1410 14:00:00 GMT+0200") new Date(1410, 6, 15, 13, 30, 59); // np.: new Date("Sun Jul 15 1410 13:30:59 GMT+0200") new Date(1410, 6, 15, 13, 30, -1); // np.: new Date("Sun Jul 15 1410 13:29:59 GMT+0200") new Date(1410, 6, 15, 13, 30, 60); // np.: new Date("Sun Jul 15 1410 13:31:00 GMT+0200")
Przekształcanie tekstu na datę - parse
Jak przekształcić datę i czas w formie tekstowej na liczbę milisekund od północy 1 stycznia 1970 roku?
Date.parse(string)
- Parametry:
String
string - data i czas w postaci tekstowej- Wartość:
Number
- liczba milisekund od północy 1 stycznia 1970 w strefie czasowej południka zerowego albo NaN (gdy podano nieprawidłową datę bądź czas)
Wyznacza liczbę milisekund, która upłynęła od północy 1 stycznia 1970 roku w strefie czasowej południka zerowego do podanej daty. Liczba ta może się różnić w zależności od podanej strefy czasowej. Funkcja może zwracać również wartości ujemne, co oznacza odliczanie wstecz, czyli daty przed 1 stycznia 1970.
1 sekunda zawiera 1000 milisekund.
Datę i czas zapisujemy w następującym formacie:
YYYY YYYY-MM YYYY-MM-DD YYYY-MM-DDTHH:mmZ YYYY-MM-DDTHH:mm:ssZ YYYY-MM-DDTHH:mm:ss.sssZ
- YYYY - rok w zakresie 0000 - 9999
- MM - miesiąc w zakresie 01 - 12 (domyślnie: 01)
- DD - dzień miesiąca w zakresie 01 - 31 (domyślnie: 01)
- HH - godzina w zakresie 00 - 23 (domyślnie: 00)
- mm - minuta w zakresie 00 - 59 (domyślnie: 00)
- ss - sekunda w zakresie 00 - 59 (domyślnie: 00)
- sss - milisekunda w zakresie 000 - 999 (domyślnie: 000)
- Z - przesunięcie strefy czasowej podane jako
+HH:mm
lub-HH:mm
albo Z (co jest równoważne +00:00)
Zwróć uwagę, że zapisując rok tekstowo zawsze musimy użyć czterech cyfr, a w przypadku pozostałych części daty i czasu (z wyjątkiem milisekund) - dwóch cyfr.
Jeżeli którykolwiek fragment zostanie podany poza poprawnym zakresem, funkcja zwróci wartość NaN.
Dla daty x = new Date(0)
, wszystkie niżej wymienione wyrażenia powinny zwracać taką samą wartość:
x.valueOf()
Date.parse(x.toString())
Date.parse(x.toUTCString())
Date.parse(x.toISOString())
Natomiast poniższe wyrażenie już niekoniecznie musi się im równać:
Date.parse(x.toLocaleString())
Przykład Date.parse
Wszystkie poniższe wyrażenia powinny wynosić zero:
Date.parse("1970"); Date.parse("1970-01"); Date.parse("1970-01-01"); Date.parse("1970-01-01T00:00Z"); Date.parse("1970-01-01T00:00:00Z"); Date.parse("1970-01-01T00:00:00.000Z"); Date.parse("1970-01-01T00:00:00+00:00"); Date.parse("1970-01-01T00:00:00-00:00"); Date.parse("1970-01-01T01:00+01:00");
Natomiast dla tak zdefiniowanych parametrów, funkcja powinna zwrócić wartość NaN:
Date.parse("2000-00"); Date.parse("2000-13"); Date.parse("2000-01-00"); Date.parse("2000-01-32"); Date.parse("2000-01-01T25:00Z"); Date.parse("2000-01-01T00:60Z"); Date.parse("2000-01-01T00:00:60Z"); Date.parse("2000-01-01T24:01:00Z"); Date.parse("2000-01-01T24:00:01Z"); Date.parse("2000-1-1T0:0:0Z"); Date.parse("test"); Date.parse("");
Konwersja daty na milisekundy - UTC
Jak przekształcić podaną datę na liczbę milisekund od północy 1 stycznia 1970 roku?
(interpretuje: Internet Explorer 9, Firefox 3, Opera 10.50, Chrome)
Date.UTC(year, month) Date.UTC(year, month, date) Date.UTC(year, month, date, hours) Date.UTC(year, month, date, hours, minutes) Date.UTC(year, month, date, hours, minutes, seconds) Date.UTC(year, month, date, hours, minutes, seconds, ms)
- Parametry:
Number
year - rok (wartości z zakresu 0...99 oznaczają lata od 1900 do 1999)Number
month - miesiąc z zakresu 0...11Number
date - dzień miesiąca z zakresu 1...31 (domyślnie: 1)Number
hours - godzina z zakresu 0...23 (domyślnie: 0)Number
minutes - minuta z zakresu 0...59 (domyślnie: 0)Number
seconds - sekunda z zakresu 0...59 (domyślnie: 0)Number
ms - milisekunda z zakresu 0...999 (domyślnie: 0)- Wartość:
Number
- liczba milisekund od północy 1 stycznia 1970 w strefie czasowej południka zerowego
Oblicza liczbę milisekund, która upłynęła od północy 1 stycznia 1970 roku w strefie czasowej południka zerowego (UTC) do podanej daty, określonej w tej samej strefie czasowej. Funkcja może zwracać również wartości ujemne, co oznacza odliczanie wstecz, czyli daty przed 1 stycznia 1970.
1 sekunda zawiera 1000 milisekund.
Możemy również podawać daty spoza przewidzianego zakresu. Na przykład zapis Date.UTC(2014, 0, 32)
jest równoważny Date.UTC(2014, 1, 1)
. Funkcja sama przeliczy prawidłową datę, uwzględniając przy tym nawet lata przestępne.
Uczulam, że podanie wartości 12 jako month wcale nie oznacza grudnia, ale styczeń następnego roku.
Podając argumenty do tej funkcji należy pamiętać, że przyjmuje ona datę i czas w strefie czasowej południka zerowego - inaczej niż w analogicznym wywołaniu new Date(...), gdzie podaje się datę i czas, określone w lokalnej strefie czasowej.
Przykład Date.UTC
Wszystkie poniższe wyrażenia powinny wynosić zero:
Date.UTC(1970, 0); Date.UTC(1970, 0, 1); Date.UTC(1970, 0, 1, 0); Date.UTC(1970, 0, 1, 0, 0); Date.UTC(1970, 0, 1, 0, 0, 0); Date.UTC(1970, 0, 1, 0, 0, 0, 0);
Aktualny czas w milisekundach - now
Jak pobrać aktualną datę i czas w formie liczby milisekund, które upłynęły od północy 1 stycznia 1970 roku?
Date.now()
- Wartość:
Number
- liczba milisekund od północy 1 stycznia 1970 w strefie czasowej południka zerowego
Zwraca liczbę milisekund, która upłynęła od północy 1 stycznia 1970 roku w strefie czasowej południka zerowego, czyli to samo co: new Date().valueOf()
.
1 sekunda zawiera 1000 milisekund.
Przykład Date.now
Date.now(); // np.: 1388870233705