Giới thiệu về Date Helper trong CI

Chúng ta có rất nhiều API giúp làm việc với thời gian, một trong những API có sẵn trong bộ framework của CI đó là Date Helper, nó là một tiện ích đi kèm được support trong CI từ những version đầu tiên đến nay. Bài viết sẽ hướng dẫn các bạn cách sử dụng Date Helper.

Date helper cung cấp cho chúng ta rất nhiều function để xử lý những vấn đề liên quan đến thời gian. Chúng ta sẽ tìm hiểu từng function một để hiểu thêm về nó.

Load Date helper

Để sử dụng được toàn bộ các hàm bên trong nó, chúng ta phải load helper vào controller để sử dụng bằng cú pháp sau:

$this->load->helper('date');

Các hàm thông dụng của Date helper

function now() Hàm này trả về thời gian hiện tại trong hệ thống Unix. Kiểu thời gian trả về có thể là thời gian local của vị trí đặt Server của hệ thống hoặc thời gian chuẩn GMT, chúng ta có thể thiết lập kiểu trả về bằng cách cấu hình lại ở vị trí $config['time_reference'] trong file config.php.

Nếu thiết lập giá trị nó là local thì hàm now() này không khác gì hàm time() trong php thuần.

function mdate() Hàm này tương đương với hàm date() của php thuần, chỉ khác ớ chỗ là mỗi kiểu hiển thị date thì phải bắt đầu bằng prefix %. Cái này rất hữu ích nếu chúng ta muốn hiển thị thông tin theo ngày, tháng, năm.

$dateFormat = "Year: %Y Month: %m Day: %d - %h:%i %a";
echo mdate($dateFormat, time());

Kết quả là: Year: 2015 Month: 06 Day: 27 - 09:26 AM

function standard_date() Hàm này cho phép chúng ta tạo ra các kiểu thời gian theo tiêu chuẩn nhất định nào đó.

$format = 'DATE_RFC822';
echo standard_date($format, time());

Tham số đầu tiên chứa kiểu chuẩn thời gian, tham số thứ hai chứa ngày theo chuẩn Unix.

Các định dạng chuẩn được hỗ trợ:

Constant Description
DATE_ATOM Atom
DATE_COOKIE HTTP Cookies
DATE_ISO8601 ISO-8601
DATE_RFC822 RFC 822
DATE_RFC850 RFC 850
DATE_RFC1036 RFC 1036
DATE_RFC1123 RFC 1123
DATE_RFC2822 RFC 2822
DATE_RSS RSS
DATE_W3C World Wide Web Consortium

function gmt_to_local() Hàm này sẽ lấy một mốc thời gian kiểu Unix( tương ứng với kiểu GMT ) làm đầu vào và chuyển đổi thành mốc thời gian local dựa vào múi giờ và thời gian yêu cầu lên hệ thống.

$timeStamp = '1140154578';
echo gmt_to_local($timeStamp, 'UM8', TRUE);

** function mysql_to_unix()** Hàm này lấy một mốc thời gian trong MySql làm đầu vào và chuyển thành dạng Unix.

$time = '20061127458961';
echo mysql_to_unix($time);

function unix_to_human() Hàm này lấy một mốc thời gian kiểu Unix và chuyển đổi thành kiểu chúng ta có thể hiểu được như là : Năm-Tháng-Ngày Giờ:Phút:Giáy AM/PM

Hàm này rất hữu dụng khi cần hiển thị ngày tháng trong một form của hệ thống.

$now = time();
echo unix_to_human($now);
echo unix_to_human($now, TRUE, 'us');
echo unix_to_human($now, TRUE, 'eu');

function human_to_unix() Hàm này ngược với hàm unix_to_human(). Hàm này trả về FALSE nếu chuỗi đầu vào không phải định dạng kiểu 'con người hiểu được' ở trên.

$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);
echo $human.'---'.$unix;

function timespan()

Hàm này chuyển đổi một mốc thời gian nào đó ở kiểu Unix về dạng :

1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes Tham số thứ nhất của hàm phải chứa một mốc thời gian kiểu Unix, tham số thứ hai phải chứa một mốc thời gian lớn hơn mốc ở tham số thứ nhất.

Nếu tham số thứ 2 là rỗng thì hệ thống sẽ sử dụng thời điểm hiện tại làm giá trị mặc định.

Mục đích chung của hàm này là hiển thị lượng thời gian đã trôi qua tính từ một điểm nào đó trong quá khứ đến bây giờ.

$time = '1079627845';
echo timespan($time, time());

function days_in_month()

Hàm này trả về số ngày trong một tháng/năm cho trước.

echo days_in_month(06, 2015);

function timezones()

Hàm này lấy một múi giờ tham chiếu làm đầu vào và trả về số giờ cách biệt so với mốc UTC.

Hàm này rất hữu ích khi được dùng cùng với hàm timezone_menu().

echo timezones('UM5');

function timezone_menu()

Hàm này sinh ra một list danh sách các múi giờ trên thế giới.

Tham số đầu của hàm này dùng để thiết lập giá trị mặc định cho múi giờ nào đó.

Tham số thứ hai của hàm dùng để đặt tên class cho thành phần Select được sinh ra.

echo timezone_menu('UM8');

Bảng tham chiếu múi giờ trên thế giới

Time Zone Location
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

Chúc các bạn thành công. Bài viết có tham khảo tài liệu của CI.