Xử lý ngày tháng trong php là một trong những keyword được search nhiều nhất trên Google về chủ đề xử lý ngày tháng trong php. Trong bài viết này, cachthietkeweb.vn sẽ viết bài viết Hướng dẫn xử lý ngày tháng trong php mới nhất 2020.
Mục lục
Hướng dẫn xử lý ngày tháng trong php mới nhất 2020
vấn đề giải quyết ngày tháng cực kì quan trọng khi bạn giải quyết với các post và tải lên website. ví dụ bạn cần in ra ngày tháng tải bài viết hiển thị theo kiểu ngày / tháng / năm hoặc ngày – tháng -năm thì bắt buộc bạn phải biết hướng dẫn dùng các hàm xử lý ngày tháng trong PHP thì mới sử dụng được. Đó là chủ đề căn bản, luôn luôn còn nhiều vấn đề và tùy thuộc vào từng bài toán mà bạn sẽ có những hướng sử dụng khác nhau.
Và trong bài này chúng ta cùng nghiên cứu một tí về mẹo giải quyết ngày tháng trong PHP nhé.
1. xây dựng time_zone tại Viet Nam
Để cấu ảnh thời gian đúng theo giờ Việt Nam thì bắt buộc ban phải xây dựng time zone cho nó. Để thiết lập time zone thì ta dùng cú pháp giống như sau:
1
|
date_default_timezone_set( 'Tên Time Zone' ); |
Lệnh này sẽ ảnh hưởng tới all các lệnh xử lý ngày tháng phía bên dưới nó nên để chắc chắn thì bạn nên để lệnh này ở đầu file của chương trình nhé. ví dụ khi làm việc với Codeigniter Framework thì bạn nên để nó ở file index.php
vì như vậy nó sẽ ảnh hưởng tới mọi controllers.
Để xây dựng time_zone ở VN thì bạn sử dụng lệnh sau:
1
|
date_default_timezone_set( 'Asia/Ho_Chi_Minh' ); |
Để nhìn thấy danh mục time zone thì bạn sử dụng đoạn code sau:
1
2
3
4
|
$timezone = DateTimeZone::listIdentifiers() ; foreach ( $timezone as $item ) echo $item . ' ; |
Chạy lên và bạn thử tìm từ khóa “Asia/Ho_Chi_Minh” thì nó sẽ có trong danh mục đó đấy 🙂
2. định hướng ngày tháng với hàm date() trong PHP
Hàm date sử dụng để biến đổi thời gian theo format mà lập trình viên muốn, cú pháp như sau:
1
|
date ( $format , $timestamp = 'time()' ) |
Trong đó:
$format
là định dạng mà hàm này sẽ trả về$timestamp
là thời gian truyền vào (kiểu INT), mặc định nó sẽ lấy thời gian hiện tại (chính là hàm time()).
Về mục lục các $format thì bạn hãy vào liên kết này nhé, khá chi tiết và đầy đủ.
Sau đây mình sẽ liệt kê một số định dạng hay dùng nhất.
d
: trả về ngày tháng (số)D
: trả về ngày của tháng (tiếng Anh)m
: trả về tháng của năm (số)M
: Trả về tháng của năm (tiếng Anh)y
: trả trả về năm (2 số cuối của năm)Y
: trả về năm đầy đủ 4 sốH
: trả về số giờ (kiểu 24h)h
: trả về số giờ (kiểu 6h)i
: trả về số phúts
: trả về số giâyc
: trả về thời gian kiểu ISO 8601, thường sử dụng tạo cho thẻ meta publish time trong SEO- .. Còn nữa nhưng bạn hãy vào linh mình cung cấp ở trên để xem nhé.
Xem thêm: Cost of goods sold là gì? Vì sao cần phải hiểu cost of goods sold?
gợi ý: get thời gian hiện nay theo định hướng ngày/tháng/năm – giờ:phút:giây
Chiếu theo các định hình ở danh sách trên thì ta sẽ có chuỗi format giống như sau: d/m/Y - H:i:s
Vậy mã code PHP sẽ là:
1
|
echo date ( 'd/m/Y - H:i:s' ); |
Chạy lên tại thời điểm mình viết bài này sẽ có kết quả là: 07/05/2016 – 19:02:36.
3. giải quyết ngày tháng nâng cao trong PHP
ngày nay chúng ta tìm hiểu một số cách xử lý nâng cao hay sử dụng nhất.
Truyền chuỗi vào định hình format
Nếu bạn mong muốn truyền một chuỗi vào định dạng format thì tôi khuyên bạn nên đặt dấu /
đằng trước mỗi ký tự, điều này sẽ giúp chuỗi k trùng lặp với format key của PHP. ví dụ bạn truyền vào format chuỗi “Bây giờ là H giờ” thì chữ i chính là số phút nên hiệu quả sẽ k giống như chờ mong.
1
|
echo date ( 'Bây giờ là H giờ' ); |
Chạy lên kết quả sẽ là: 840â16 710ờ Saturdayà 19 710ờ
Nhưng nếu sửa code lại giống như sau:
1
|
echo date ( '\B\â\y \g\i\ờ \l\à H \g\i\ờ' ); |
Thì kết quả sẽ là: hiện tại là 19 giờ
chuyển đổi thời gian sang kiểu INT
Để chuyển biến thời gian sang kiểu INT thì ta sử dụng hàm strtotime($time)
, ví dụ:
1
|
echo strtotime ( date ( 'Y-m-d H:i:s' )); |
kết quả trong máy mình sẽ là:1462649606
định hướng ngày tháng trong MySQL
Để lưu đúng định hình ngày tháng trong MySQL thì bạn dùng format như sau:
1
|
date ( 'Y-m-d H:i:s' ) |
Nếu bạn mong muốn lưu trữ ngày tạo bài viết hoặc ngày cmt hoặc ngày thực hiện một thao tác gì đó thì hãy dùng cú pháp đó nhé.
xử lý cộng trừ ngày tháng với hàm mktime()
Hàm mktime sẽ tính toán mang ra ngày chuẩn xác bởi các tham số truyền vào, cú pháp giống như sau:
1
|
mktime ( $hour , $minute , $second , $month , $day , $year ); |
note: Hàm này sẽ trả về thời gian kiểu INT nên bạn phải sử dụng hàm date() để chuyển biến ra định hình mong muốn.
gợi ý: Cho ngày 20/11/2016, hãy cộng thêm 12 ngày nữa để xem hiệu quả ra bao nhiêu.
1
2
|
$dateint = mktime (0, 0, 0, 11, (20 + 12), 2016); echo date ( 'd/m/Y' , $dateint ); // 02/12/2016 |
Bạn quan tâm nếu ngày 20 mà công thêm 12 ngày thì sẽ ra là ngày 32, lúc này tháng phải thăng lên 1 nên kết quả sẽ là: 02/12/2016
ví dụ: xem ngày mai, tháng tới, năm tới sẽ có ngày tháng năm bao nhiêu.
Xem thêm: tài liệu hướng dẫn odoo vietnam
1
2
3
|
$tomorrow = mktime (0, 0, 0, date ( "m" ) , date ( "d" )+1, date ( "Y" )); $lastmonth = mktime (0, 0, 0, date ( "m" )-1, date ( "d" ), date ( "Y" )); $nextyear = mktime (0, 0, 0, date ( "m" ), date ( "d" ), date ( "Y" )+1); |
4. Lời kết
Nói về ngày tháng trong PHP thì có rất nhiều hàm và nhiều hướng dẫn viết không giống nhau, do đó nội dung trong bài mình k thể trình bày hết được nên nếu trong tiến trình học và lập trình bạn hãy sử dụng Google để test thêm thông tin nhé. Hy vọng qua bài nghiên cứu cách xử lý ngày tháng trong PHP này sẽ làm được phần nào cho các bạn.
nguồn: freetuts.net