Forum und email
date

date

(PHP 3, PHP 4, PHP 5)

date -- Formatuje lokalny czas/datę

Opis

string date ( string format [, int znacznik_czasu] )

Zwraca datę sformatowaną według szablonu podanego w argumencie format. Żądana data określona jest w argumencie znacznik_czasu, a w przypadku jego braku pobierany jest aktualny czas.

Notatka: Poprawny zakres znacznika czasu to zwykle od piątku, 13 grudnia 1901 20:45:54 GMT (czasu Greenwich) do wtorku, 19 stycznia 2038 03:14:07 GMT. (Wartości te odpowiadają minimalnej i maksymalnej wartości 32-bitowej liczbie całkowitej ze znakiem). W systemie Windows zakres ten jest bardziej ograniczony i zawiera się w przedziale 01-01-1970 do 19-01-2038.

Wygenerowanie znacznika czasu z daty zapisanej jako łańcuch znaków umożliwia funkcja strtotime(). Również niektóre systemy baz danych mają funkcje konwersji ich formatów daty w uniksowy znacznik czasu (jak np. funkcja UNIX_TIMESTAMP w MySQL-u).

Poniższych znaków używa się w szablonie formatującym datę:

  • a - "am" lub "pm"

  • A - "AM" lub "PM"

  • B - Czas internetowy Swatcha

  • d - dzień miesiąca, 2 cyfry z zerem na początku; tzn. od "01" do "31"

  • D - dzień tygodnia, tekst, 3 litery; n.p. "Fri"

  • F - miesiąc, tekst, pełna nazwa; n.p. "January"

  • g - godzina, format 12-godzinny bez zera na początku; tzn. od "1" do "12"

  • G - godzina, format 24-godzinny bez zera na początku; tzn. od "0" do "23"

  • h - godzina, format 12-godzinny z zerem na początku; tzn. od "01" do "12"

  • H - godzina, format 24-godzinny z zerem na początku; tzn. od "00" do "23"

  • i - minuty; tzn. od "00" do "59"

  • I (duża litera i) - "1" jeśli czas oszczędzania światła słonecznego (w Polsce - czas letni), "0" jeśli czas standardowy (w Polsce - zimowy)

  • j - dzień miesiąca bez zera na początku; tzn. od "1" do "31"

  • l (mała litera 'L') - dzień tygodnia, tekst, pełna nazwa; n.p. "Friday"

  • L - "1" jeśli rok przestępny, "0" w przeciwnym razie

  • m - miesiąc; tzn. "01" to "12"

  • M - miesiąc, tekst, 3 litery; n.p. "Jan"

  • n - miesiąc bez zera na początku; tzn. "1" to "12"

  • O - różnica w stosunku do czasu Greenwich; n.p. "+0200"

  • r - data sformatowana według RFC 822; n.p. "Thu, 21 Dec 2000 16:01:07 +0200" (dodane w PHP 4.0.4)

  • s - sekundy; i.e. "00" to "59"

  • S - standardowy angielski sufiks liczebnika porządkowego, 2 litery; tzn. "st", "nd", "rd" lub "th"

  • t - liczba dni w danym miesiącu; tzn. od "28" do "31"

  • T - strefa czasowa ustawiona na tej maszynie; n.p. "EST" lub "MDT"

  • U - liczba sekund od uniksowej Epoki (1 stycznia 1970 00:00:00 GMT)

  • w - dzień tygodnia, liczbowy, tzn. od "0" (Niedziela) do "6" (Sobota)

  • W - numer tygodnia w roku według ISO-8601, tydzień zaczyna się w poniedziałek (dodane w PHP 4.1.0)

  • Y - rok, 4 liczby; n.p. "1999"

  • y - rok, 2 liczby; n.p. "99"

  • z - dzień roku; tzn. od "0" do "365"

  • Z - ofset strefy czasowej w sekundach (tzn. pomiędzy "-43200" a "43200"). Ofset dla stref czasowych na zachód od UTC (południka zero) jest zawsze ujemny a dla tych na wschód od UTC jest zawsze dodatni.

Nierozpoznane znaki w szablonie formatującym będą wyświetlone tak jak są. "Z" zawsze zwróci "0" kiedy używana jest funkcja gmdate().

Przykład 1. przykłady użycia date()

echo date ("l dS of F Y h:i:s A");
echo "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));

Jeśli nie chcesz, aby któryś z rozpoznawalnych w szablonie znaków został zastąpiony odpowiadającą mu częścią daty, musisz poprzedzić go znakiem odwrotnego ukośnika (backslash). Jeśli znak razem z odwrotnym ukośnikiem tworzy jakiś znak specjalny, musisz również zacytować ukośnik odwrotny.

Przykład 2. Opuszczanie znaków w szablonie date()

echo date("l \\t\h\e jS"); // wyświetla tekst typu 'Saturday the 8th'

Można użyć date() i mktime() razem, aby odszukać daty w przyszłości lub przeszłości.

Przykład 3. przykłady zastosowania date() i mktime()

$jutro           = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));
$ostatni_miesiac = mktime (0,0,0,date("m")-1,date("d"),  date("Y"));
$kolejny_rok     = mktime (0,0,0,date("m"),  date("d"),  date("Y")+1);

Notatka: Rozwiązanie to jest bardziej godne zaufania od dodawania lub odejmowania określonej liczby sekund, chociażby z powodu zmiany czasu.

Poniżej znajduje się kilka przykładów zastosowania date(). Proszę zwrócić uwagę, że powinno się cytować wszystkie znaki aby uniknąć nieoczekiwanych rezultatów, a poza tym, nawet te znaki, które obecnie nie mają znaczenia, mogą mieć przypisane jakieś znaczenie w przyszłych wersjach PHP. O ile to możliwe, należy używać cudzysłowów pojedynczych, żeby uniknąć np. zamiany \n na znak nowej linii.

Przykład 4. zastosowania date()

/* Dzisiaj jest March 10th, 2001, 5:16:18 pm */
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m is month
$today = date("H:i:s");                         // 17:16:17

Aby sformatować datę w innych językach, należy użyć funkcji setlocale() i strftime().

Patrz także getlastmod(), gmdate(), mktime(), strftime() i time().