12/08/2018, 10:30

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 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í $$onfig['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.

Bài liên quan

Giới thiệu về directive dndLists trong Angular

Hôm nay mình sẽ giới thiệu đến các bạn directive dndLists - hỗ trợ kéo thả item giữa các list trong angular 1. Và mình sẽ làm 1 bảng KANBAN sử dụng directive trên. Trước khi bắt đầu, các bạn nên tìm hiểu sơ về dndLists trước nhé (tất nhiên các bạn nên biết sơ về directive là gì trong angular đã ...

Bùi Văn Nam viết 16:23 ngày 12/08/2018

Giới thiệu về Media CSS trong Responsive

Quy tắc @media cho phép tạo kiểu có điều kiện của các phần tử. Các điều kiện có thể dựa trên loại phương tiện hoặc các đặc tính đã biết của thiết bị đang được sử dụng. Kết hợp truy vấn truyền thông với bố cục chất lỏng và hình ảnh linh hoạt, cho phép triển khai thiết kế web đáp ứng. Trong bài ...

Bùi Văn Nam viết 15:51 ngày 12/08/2018

Giới thiệu về hàm calc() trong CSS

Đôi lời Chào các bạn. Mình là Minh, hiện tại đang làm Front End Developer tại công ty Framgia. Đối với một Front End Dev như mình, dựng layout cho websites là công việc hàng ngày, và đảm bảo các websites này tương thích với các trình duyệt cũng như responsive là yêu cầu bắt buộc. Sau đây mình sẽ ...

Tạ Quốc Bảo viết 15:39 ngày 12/08/2018

Giới thiệu về UI Testing trong iOS

UITesting là gì? UI testing là một phương thức test thông qua giao diện người dùng (User Interface). Khái niệm này không có gì xa lạ cả, chúng ta vẫn thường xuyên thực hiện UI Testing một cách thủ công, bằng cách chạy app và dùng tay nhấn vào các đối tượng như buttong, textfield, tableview,... ...

Tạ Quốc Bảo viết 15:34 ngày 12/08/2018

Unicorn nói chuyện với nginx bằng cách nào - giới thiệu về unix sockets trong ruby

Tài liệu: How unicorn talks to nginx - an introduction to unix sockets in Ruby Ruby application servers được sử dụng điển hình cùng với một web server giống như là nginx. Khi người dùng request một page từ ứng dụng rails của bạn, nginx ủy quyền request cho application server. Nhưng chính xác thì ...

Bùi Văn Nam viết 14:39 ngày 12/08/2018
0