Bài 23: Xử lý ngày tháng trong php

Ngày đăng: 2024-04-13 11:55:27

Mục  lục:

             1. Thiết lập time_zone tại Việt Nam

              2. Định dạng ngày tháng với hàm date() trong PHP

              3. Xử lý ngày tháng nâng cao trong PHP

                  

1. Thiết lập time_zone tại Việt Nam

Để cấu hình thời gian đúng theo giờ Việt Nam thì bắt buộc ban phải thiết lập time zone cho nó. Để thiết lập time zone thì ta sử dụng cú pháp như sau:

date_default_timezone_set('Tên Time Zone');

 

Lệnh này sẽ ảnh hưởng tới tất cả 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.

Để thiết lập time_zone ở Việt Nam thì bạn sử dụng lệnh sau:

 

date_default_timezone_set('Asia/Ho_Chi_Minh');

 

Để xem danh sách time zone thì bạn sử dụng đoạn code sau:

 

$timezone = DateTimeZone::listIdentifiers() ;

foreach ($timezone as $item){

    echo $item . '<br/>';

}

 

Chạy lên và bạn thử tìm từ khóa "Asia/Ho_Chi_Minh" thì nó sẽ có trong danh sách đó đấy :)

2. Định dạng ngày tháng với hàm date() trong PHP

Hàm date dùng để chuyển đổi thời gian theo format mà lập trình viên mong muốn, cú pháp như sau:

 

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()).

Sau đây mình sẽ liệt kê một số định dạng hay sử 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út
  • s: trả về số giây
  • c: trả về thời gian kiểu ISO 8601, thường 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é.

Ví dụ: Lấy thời gian hiện tại theo định dạng ngày/tháng/năm - giờ:phút:giây

Chiếu theo các định dạng ở danh sách trên thì ta sẽ có chuỗi format như sau: d/m/Y - H:i:s

Vậy mã code PHP sẽ là:

 

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. Xử lý ngày tháng nâng cao trong PHP

Bây giờ 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 dạng format

Nếu bạn 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 không trùng 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 kết quả sẽ không như mong đợi.

 

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 như sau:

 

echo date('\B\â\y \g\i\ờ \l\à H \g\i\ờ');

 

Thì kết quả sẽ là: Bây giờ là 19 giờ

+ Chuyển đổi thời gian sang kiểu INT

Để chuyển đổi thời gian sang kiểu INT thì ta sử dụng hàm strtotime($time), ví dụ:

 

echo strtotime(date('Y-m-d H:i:s'));

 

Kết quả trong máy mình sẽ là:1462649606

+ Định dạng ngày tháng trong MySQL

Để lưu đúng định dạng ngày tháng trong MySQL thì bạn sử dụng format như sau:

 

date('Y-m-d H:i:s')

 

Nếu bạn muốn lưu trữ ngày tạo bài viết hoặc ngày comment hoặc ngày thực hiện một thao tác gì đó thì hãy sử 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 đưa ra ngày chính xác bởi các tham số truyền vào, cú pháp như sau:

 

mktime ($hour, $minute, $second, $month, $day , $year);

 

Lưu ý: 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 đổi ra định dạng mong muốn.

Ví dụ: Cho ngày 20/11/2016, hãy cộng thêm 12 ngày nữa để xem kết quả ra bao nhiêu.

 

$dateint = mktime(0, 0, 0, 11, (20 + 12), 2016);

echo date('d/m/Y', $dateint); // 02/12/2016

 

Bạn để ý 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.

 

$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);

 

Về bài trước...

                                 Bài tiếp theo...

 

 


Tài liệu lập trình PHP

Bài viết trong cùng chuyên mục

Góc games giải trí (chơi trực tiếp trên web) Đăng nhập (chơi có thưởng)



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Bắn bóng

Plapy Bird (NH.Đông)

Vượt chướng ngại vật

Vẽ hình cứu người

Game Phases

Game vui chơi có thưởng

Game bắn cá



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

8179