Przejdź do treści

Obiekty daty - Date

Jak utworzyć obiekt daty i czasu?

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 zerowego
Number year - rok (wartości z zakresu 0...99 oznaczają lata od 1900 do 1999)
Number month - miesiąc z zakresu 0...11
Number 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...11
Number 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
Facebook