Helper Date
The Date Helper file contains functions that help you work with dates.
Ładowanie helpera
Ten helper jest ładowany za pomocą poniższego kodu:
$this->load->helper('date');
Dostępne są następujące funkcje:
now()
Zwraca obecny Unix'owy znacznik czasu, odwołując sie do Twojego lokalnego czasu serwera lub czasu GMT - zależnie od wartości "time reference" ustawionej w pliku konfiguracyjnym. Jeśli nie zamierzasz ustawiać odwołania na czas GMT (co zazwyczaj jest stosowane, jeśli chcemy uruchomić aplikację, w której każdy użytkownik może ustawiać swoją własną strefę czasową), to nie odczujesz różnicy w stosowaniu tej funkcji, względem funkcji PHP time().
mdate()
Ta funkcja jest tożsama z funkcją PHP date(), za wyjątkiem tego, że pozwala na używanie stylu kodowania daty znanego z MySQL, gdzie każdy znak kodu jest poprzedzony znakiem procentu: %Y %m %d itd.
Dobrą stroną zajmowania się datą w ten sposób jest to, że nie musisz się martwić o escapowanie liter, które nie są kodem daty - tak jak musisz to normalnie robić w przypadku funkcji date(). Przykład:
$datestring = "Rok: %Y Miesiąc: %m Dzień: %d - %h:%i %a";
$time = time();
echo mdate($datestring, $time);
Jeśli znacznik czasu nie jest dołączony w drugim parametrze, użyty zostanie aktualny czas..
standard_date()
Pozwala na wygenerowanie daty, w jednym z kilku ustandaryzowanych formatów. Przykład:
$format = 'DATE_RFC822';
$time = time();
echo standard_date($format, $time);
Pierwszy parametr musi zawierać nazwę formatu, drugi natomiast Unix'owy znacznik czasu.
Wspierane formaty:
Stała | Opis | Przykład |
---|---|---|
DATE_ATOM | Atom | 2005-08-15T16:13:03+0000 |
DATE_COOKIE | HTTP Cookies | Sun, 14 Aug 2005 16:13:03 UTC |
DATE_ISO8601 | ISO-8601 | 2005-08-14T16:13:03+00:00 |
DATE_RFC822 | RFC 822 | Sun, 14 Aug 05 16:13:03 UTC |
DATE_RFC850 | RFC 850 | Sunday, 14-Aug-05 16:13:03 UTC |
DATE_RFC1036 | RFC 1036 | Sunday, 14-Aug-05 16:13:03 UTC |
DATE_RFC1123 | RFC 1123 | Sun, 14 Aug 2005 16:13:03 UTC |
DATE_RFC2822 | RFC 2822 | Sun, 14 Aug 2005 16:13:03 +0000 |
DATE_RSS | RSS | Sun, 14 Aug 2005 16:13:03 UTC |
DATE_W3C | World Wide Web Consortium | 2005-08-14T16:13:03+0000 |
local_to_gmt()
Jako parametr przyjmuje Unix'owy znacznik czasu i zwraca go jako GMT. Przykład:
$now = time();
$gmt = local_to_gmt($now);
gmt_to_local()
Jako parametr przyjmuje Unix'owy znacznik czasu (odwołujący się do GMT) i zamienia go na podstawie strefi czasowej na lokalny znacznik czasu letniego. Przykład: Takes a Unix timestamp (referenced to GMT) as input, and converts it to a localized timestamp based on the timezone and Daylight Saving time submitted. Example:
$timestamp = '1140153693';
$timezone = 'UM8';
$daylight_saving = TRUE;
echo gmt_to_local($timestamp, $timezone, $daylight_saving);
Uwaga: Z listą stref czasowych możesz się zapoznać na dole tej strony.
mysql_to_unix()
W pierwszym parametrze przyjmuje znacznik czasu MySQL i zwraca go jako Unix'owy. Przykład:
$mysql = '20061124092345';
$unix = mysql_to_unix($mysql);
unix_to_human()
W pierwszym parametrze bierz Unix'owy znacznik czasu i zwraca go w przyjaznym i czytelnym formacie na podstawie szablonu:
YYYY-MM-DD HH:MM:SS AM/PM
Może to być przydatne, kiedy musisz wyświetlić datę w polu formularza.
Czas może mieć format "z" i "bez" sekund. Może być ustawiony na format europejski lub amerykański. Jeśli dostarczymy tylko znacznik czasu, funkcja zwróci czas bez sekund w formacie amerykańskim. Przykład:
$now = time();
echo unix_to_human($now); // czas amerykański bez sekund
echo unix_to_human($now, TRUE, 'us'); // czas amerykański z sekundami
echo unix_to_human($now, TRUE, 'eu'); // czas europejski z sekundami
human_to_unix()
Funkcja działa odwrotnie do przedstawionej powyżej. Jako pierwszy parametr przyjmuje "przyjazny" format czasu i zwraca go w formacie Unix. Funkcja jest przydatna, jeśli pozwalasz na określanie "przyjaznego" formatu daty w formularzach. Zwraca FALSE (boolean) jeśli przypisany ciąg nie ma formatu takiego, jak powyżej. Przykład:
$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);
timespan()
Formatuje Unix'owy znacznik czasu, w taki sposób, że jest on podobny do tego: Formats a unix timestamp so that is appears similar to this:
1 Rok, 10 Miesięcy, 2 Tygodni, 5 Dni, 10 Godzin, 16 Minut
Pierwszy parametr musi zawierać Unix'owy znacznik czasu. Drugi parametr musi zawierać znacznik czasu, który jest większy od tego z pierwszego parametru. Jeśli drugi parametr jest pusty, użyty zostanie obecny czas. Najczęstszym zastosowaniem dla tej funkcji jest pokazanie ile czasu minęło od jakiegoś punktu w przeszłości, aż do teraz. Przykład:
$post_date = '1079621429';
$now = time();
echo timespan($post_date, $now);
Uwaga: Tekst wygenerowany przez tę funkcję znajduje się w pliku językowym: language/<your_lang>/date_lang.php
days_in_month()
Zwraca liczbę dni w określonym miesiącu danego roku. Bierze pod uwagę lata przestępne. Przykład:
echo days_in_month(06, 2005);
Jeśli drugi parametr będzie pusty, użyty zostanie obecny rok.
timezones()
Przyjmuje odwołanie do strefy czasowej (aby sprawdzić listę stref czasowych zobacz "Nazwy stref czasowych" poniżej) i zwraca różnicę godzin wzglęcem czasu UTC.
echo timezones('UM5');
Ta funkcja jest pomocja, jeśli użyjemy jej razem z funkcją timezone_menu().
timezone_menu()
Generuje pole select z listą stref czasowych:
Funkcja jest przydatna, kiedy w swoim serwisie pozwalasz użytkownikom na wybór ich własnej strefy czasowej.
Pierwszy parametr pozwala na określenie domyślnej (zaznaczonej) opcji w polu select. Dla przykładu, aby ustawić czas pacyficzny, jako domyślny zrobimy tak:
echo timezone_menu('UM8');
Wartości dla tej funkcji proszę sprawdzić poniżej, w tabeli z nazwami stref czasowych.
Drugi parametr pozwala na określenie klasy CSS, która będzie użyta dla pola select.
Uwaga: Tekst dla pola select jest wygenerowany na podstawie pliku językowego: language/<your_lang>/date_lang.php
Nazwy stref czasowych
Poniższa tabela zawiera spis stref czasowych oraz ich lokalizację
Strefa czasowa | Lokalizacja |
---|---|
UM12 | (UTC - 12:00) Enitwetok, Kwajalien |
UM11 | (UTC - 11:00) Nome, Midway Island, Samoa |
UM10 | (UTC - 10:00) Hawaii |
UM9 | (UTC - 9:00) Alaska |
UM8 | (UTC - 8:00) Pacific Time |
UM7 | (UTC - 7:00) Mountain Time |
UM6 | (UTC - 6:00) Central Time, Mexico City |
UM5 | (UTC - 5:00) Eastern Time, Bogota, Lima, Quito |
UM4 | (UTC - 4:00) Atlantic Time, Caracas, La Paz |
UM25 | (UTC - 3:30) Newfoundland |
UM3 | (UTC - 3:00) Brazil, Buenos Aires, Georgetown, Falkland Is. |
UM2 | (UTC - 2:00) Mid-Atlantic, Ascention Is., St Helena |
UM1 | (UTC - 1:00) Azores, Cape Verde Islands |
UTC | (UTC) Casablanca, Dublin, Edinburgh, London, Lisbon, Monrovia |
UP1 | (UTC + 1:00) Berlin, Brussels, Copenhagen, Madrid, Paris, Rome |
UP2 | (UTC + 2:00) Kaliningrad, South Africa, Warsaw |
UP3 | (UTC + 3:00) Baghdad, Riyadh, Moscow, Nairobi |
UP25 | (UTC + 3:30) Tehran |
UP4 | (UTC + 4:00) Adu Dhabi, Baku, Muscat, Tbilisi |
UP35 | (UTC + 4:30) Kabul |
UP5 | (UTC + 5:00) Islamabad, Karachi, Tashkent |
UP45 | (UTC + 5:30) Bombay, Calcutta, Madras, New Delhi |
UP6 | (UTC + 6:00) Almaty, Colomba, Dhaka |
UP7 | (UTC + 7:00) Bangkok, Hanoi, Jakarta |
UP8 | (UTC + 8:00) Beijing, Hong Kong, Perth, Singapore, Taipei |
UP9 | (UTC + 9:00) Osaka, Sapporo, Seoul, Tokyo, Yakutsk |
UP85 | (UTC + 9:30) Adelaide, Darwin |
UP10 | (UTC + 10:00) Melbourne, Papua New Guinea, Sydney, Vladivostok |
UP11 | (UTC + 11:00) Magadan, New Caledonia, Solomon Islands |
UP12 | (UTC + 12:00) Auckland, Wellington, Fiji, Marshall Island |