Sử dụng Date helper trên CodeIgniter

Trong hệ thống đôi khi chúng ta phải xử lý các chức năng liên quan đến thời gian, ngày tháng. Do đó CodeIgniter đã đưa ra một tiện ích rất mạnh mẽ đó là Date helper. Trong bài này mình sẽ trình bày về cách sử dụng Date helper trên CodeIgniter

Date helper trên CodeIgniter đưa ra cho chúng ta rất nhiều hàm để xử lý các vấn đề liên quan tới thời gian.

Chúng ta sẽ đi qua từng hàm để biết cách sử dụng chúng.

1. Tải Date helper lên hệ thống.

Để sử dụng được Date helper của CodeIgniter, các bạn sẽ gọi hàm load để gọi helper này lên.

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

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

a. Hàm now().

Hàm này trả về thời gian hiện tại của hệ thống theo 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ề ở trường $config['time_reference'] trong file config.php.

Nếu thiết lập giá trị $config['time_reference'] = 'local' thì hàm now() này không khác gì với hàm time() của PHP.

Sử dụng Date helper trên CodeIgniter

b. Hàm mdate().

Hàm này cũng tương tự hàm date() trong PHP, trừ một cái đó là nó cho phép chúng ta sử dụng kiểu mã date của MySQL, trong đó mỗi mà date được bắt đầu bằng dấu %.

Ưu điểm của sử lý ngày tháng theo kiểu này là chúng ta không phải lo nghĩ về việc loại bỏ các ký tự không phải kiểu mã date trong PHP.

Cái này rất hữu ích khi chúng ta muốn hiển thị thông tin ngày tháng kèm theo các ghi chú. Ví dụ

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

Sử dụng Date helper trên CodeIgniter

c. Hàm 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';
$time = time();
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ợ bao gồm:

  • DATE_ATOM : 2005-08-15T16:13:03+0000
  • DATE_COOKIE : Sun, 14 Aug 2005 16:13:03 UTC
  • DATE_ISO8601 : 2005-08-14T16:13:03+00:00
  • DATE_RFC822 : 14 Aug 05 16:13:03 UTC
  • DATE_RFC850 : Sunday, 14-Aug-05 16:13:03 UTC
  • DATE_RFC1036 : Sunday, 14-Aug-05 16:13:03 UTC
  • DATE_RFC1123 : Sun, 14 Aug 2005 16:13:03 UTC
  • DATE_RFC2822 : Sun, 14 Aug 2005 16:13:03 +0000
  • DATE_RSS : Sun, 14 Aug 2005 16:13:03 UTC
  • DATE_W3C : 2005-08-14T16:13:03+0000

d. Hàm 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 = '1140153693';
$timezone = 'UM8';
$daylight_saving = TRUE;

echo gmt_to_local($timestamp, $timezone, $daylight_saving);

e. Hàm 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.

$mysql = '20061124092345';

$unix = mysql_to_unix($mysql);

f. Hàm 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); // U.S. time, no seconds
echo unix_to_human($now, TRUE, 'us'); // U.S. time with seconds
echo unix_to_human($now, TRUE, 'eu'); // Euro time with seconds

g. Hàm 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);

h. Hàm 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ờ.

$post_date = '1079621429';
$now = time();
echo timespan($post_date, $now);

i. Hàm 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, 2005);

j. Hàm 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');

k. Hàm 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');

Sử dụng Date helper trên CodeIgniter

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

  • 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 :)

Tags: ,