Hướng dẫn dùng bolivia timezone trong PHP
Đôi lúc các bạn xem các hướng dẫn về hàm lấy thời gian :date(format,timestamp). Nếu chưa biết hàm date(format,timestamp) bạn có thể xem ở link:http://congnghe5s.com/bai-viet/xu-ly-ngay-gio-trong-php.html. Bạn thực hiện test lệnh trên máy và kết quả không khớp với time hiện tại. Đó là vì lí do thời gian hay timezone trên server bạn đã cài đặt khác vì thế để trả về đúng time bạn muốn bạn có thể dùng hàm: Cú pháp:date_default_timezone_set ( string tham số : $
date_default_timezone_set('Asia/Ho_Chi_Minh'). Sau đó các bạn dùng hàm : echo date('d/m/Y - H:i:s'); ra đúng kết quả time ở Việt Nam. Ví dụ: date_default_timezone_set('Asia/Ho_Chi_Minh'); if (date_default_timezone_get()) { echo 'date_default_timezone_set: ' . date_default_timezone_get() . ' '; } echo date('d/m/Y H:i:s'); Ví dụ trên có 1 hàm cũng khá quan trọng : date_default_timezone_get() trả về timezone mặc định của server bạn đang chạy hoặc là đã được thiết lập thông qua date_default_timezone_set(). Qua bài viết hy vọng các bạn có thêm kiến thức khi xử lý ngày tháng trong PHP. Tiếp tục cùng tìm hiểu về View trong CakePHP, bài này chúng ta sẽ cùng học cách sử dụng TimeHelper. Đây là helper giúp bạn giải quyết nhanh những vấn đề liên quan đến các thông tin về thời gian. Hai điểm chính mà nó giúp được chúng ta là :
1) Time zone. Có một cách sử dụng thông dụng là set timezone để match với từng user ở từng địa điểm khác nhau. Trước tiên, bạn cần bỏ comment đoạn code date_default_timezone_set('UTC'); trong file app/Config/core.php để set timezone về múi giờ GMT+0. Kế đến là bạn cần chuẩn bị một trường trong DB của bạn để lưu trữ timzezone, điều này cho phép user chọn timezone phù hợp với địa điểm của họ. Ví dụ như đoạn code dưới, bạn sẽ thấy tùy vào địa điểm mà timezone của user sẽ khác nhau :
2) Một số hàm format. ** 2.1) convert($serverTime, $timezone = NULL)** Hàm này trả về giá trị integer, nó sẽ convert thời gian được đưa vào (timezone trên server) thành thời gian local của người dùng.
2.2) dayAsSql($dateString, $field_name, $timezone = NULL) Kết quả trả về là một chuỗi có cùng format như Sql dạng như trong ví dụ dưới :
2.3) daysAsSql($begin, $end, $fieldName, $timezone = NULL) Có khác chút so với hàm trên là chuỗi trả về sẽ có dạng kiểu ($field_name >= ‘2008-01-21 00:00:00’) AND ($field_name <= ‘2008-01-25 23:59:59’) 2.4) format($date, $format = NULL, $default = false, $timezone = NULL) Hàm này sẽ dùng các options như hàm strftime() của PHP và trả về chuỗi được format.
2.5) fromString($dateString, $timezone = NULL) Đây là hàm giúp bạn chuyển đổi từ chuỗi sang một con số integer của date, nó sử dụng hàm strtotime() của PHP. Ví dụ :
2.6) gmt($dateString = NULL) Khi sử dụng hàm gmt() sẽ trả về cho bạn giờ GMT theo chuỗi date mà bạn truyền vào, nếu không có sẽ mặc định là giờ hiện tại. Cũng giống các hàm khác thì bạn có thể gọi trong View hoặc dùng tới lớp CakeTime ở ngoài View. 2.7) nice($dateString = NULL, $timezone = NULL, $format = null) Như cái tên nice() của hàm này, nó sẽ trả về cho bạn một chuỗi thời gian theo một format "nice". Mặc định chuỗi trả về có dạng "Mon, Aug 22nd 2011, 11:53" khi bạn chỉ đưa vào $dateString. Ngoài ra, bạn có thể tự định dạng format trả về qua tham số $format.
2.8) niceShort($dateString = NULL, $timezone = NULL) Hàm này sẽ có ít tham số hơn hàm nice() và output của nó sẽ có format ít linh hoạt hơn như sau : 2.9) serverOffset() Khi cần lấy offset của server thì bạn dùng hàm này, nó sẽ trả về cho bạn bằng số giây. 2.10) timeAgoInWords($dateString, $options = array()) Đây là hàm sẽ có ích khi bạn đưa ra chuỗi thời gian dạng mấy năm mấy tháng mấy tuần mấy ngày trước từ khoảng thời gian
Để có được chuỗi như tôi nói thì bạn cần chỉ định 'end' trong mảng
Ngoài ra, với 'accuracy' bạn có thể control
được output, ví dụ như bạn chỉ muốn lấy đến năm thì hãy truyền vào 3) Các hàm test time Như cái tên của các hàm mà tôi liệt kê dưới đây, chúng dùng để test xem time có chính xác hay không. Tên mỗi hàm đều nói lên ý nghĩa của chúng và cách sử dụng rất đơn giản nên tôi sẽ không lấy ví dụ về tất cả.
Tất cả các hàm trên đều trả về giá trị true hoặc false. Hãy cùng xem một ví dụ :
Vậy là chúng ta kết thúc tìm hiểu một số hàm hữu ích của lớp TimeHelper có thể giúp định dạng format các chuỗi thời gian, dùng để kiểm tra một số trường hợp về thời gian. Hy vọng, bài viết đã giúp ích bạn ít nhiều khi tìm hiểu CakePHP. To be continued ... |