Hướng dẫn thời gian php

Hướng dẫn thời gian php

Đã đăng vào thg 11 16, 2020 10:06 SA 3 phút đọc

Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý với các bài viết và đăng lên website. Ví dụ bạn cần in ra ngày tháng đăng 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 cách sử dụng các hàm xử lý ngày tháng trong PHP thì mới làm được. Đó là vấn đề căn bản, vẫ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 làm khác nhau.

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

Để thiết lập time_zone ta làm theo cú pháp:

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 .Để 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/>';
}

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

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

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

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

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

echo strtotime(date('Y-m-d H:i:s'));
  • Xử lý cộng trừ ngày tháng với hàmmktime()

Hàmmktime() 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.

Cảm ơn các bạn đã đọc bài!

Tài liệu tham khảo:

https://www.php.net/manual/en/function.date.php

https://freetuts.net/xu-ly-ngay-thang-trong-php-649.html

All rights reserved

  • Trung Nguyen
  • 04/05/2020

  • 5 min read

Hàm date() trong PHP được sử dụng để định dạng ngày giờ.

Hàm date() trong PHP

Hàm date() trong PHP định dạng thời gian thành ngày và giờ dễ đọc hơn.

Cú pháp

date(format, timestamp)

Tham sốMô tả
format Bắt buộc nhập. Định dạng thời gian
timestamp Không bắt buộc. Chỉ định thời gian cần định dạng. Mặc định là ngày giờ hiện tại

Định dạng ngày

Tham số format bắt buộc nhập của hàm date() chỉ định cách định dạng ngày (hoặc giờ).

Dưới đây là một số ký tự thường được sử dụng định dạng ngày:

  • d - Đại diện cho ngày trong tháng (01 đến 31)
  • m - Đại diện cho một tháng (01 đến 12)
  • Y - Đại diện cho một năm (bằng bốn chữ số)
  • l (chữ 'L' thường) - Đại diện cho ngày trong tuần

Các ký tự khác, như "/", "." Hoặc "-" cũng có thể được chèn giữa các ký tự để thêm định dạng bổ sung.

Ví dụ dưới đây định dạng ngày hôm nay theo ba cách khác nhau:

<?php    
   echo "Today is " . date("d/m/Y") . "<br>";    
   echo "Today is " . date("d.m.Y") . "<br>";    
   echo "Today is " . date("d-m-Y") . "<br>";    
   echo "Today is " . date("l");    
?>

Đây có thể là kết quả mà bạn sẽ nhận được:

Today is 04/05/2020
Today is 04.05.2020
Today is 04-05-2020
Today is Monday
Tip: Sử dụng hàm date() để tự động cập nhật năm bản quyền trên trang web của bạn như sau: &copy; <?php echo date("Y");?>

Định dạng giờ

Dưới đây là một số ký tự thường được sử dụng để định dạng giờ:

  • H - định dạng 24 giờ của một giờ (00 đến 23)
  • h - định dạng 12 giờ của một giờ với số 0 đứng đầu (01 đến 12)
  • i - Phút với số 0 đứng đầu (00 đến 59)
  • s - Giây với số 0 đứng đầu (00 đến 59)
  • a - Chữ thường Ante meridiem (am) và Post meridiem (pm) (sáng và chiều)

Ví dụ dưới đây xuất ra thời gian hiện tại ở định dạng đã chỉ định:

<?php
   echo "The time is " . date("h:i:sa");
?>

Đây có thể là kết quả mà bạn sẽ nhận được:

The time is 04:02:25am
Lưu ý: hàm date() của PHP sẽ trả về ngày / giờ hiện tại của máy chủ!

Múi giờ trong PHP

Nếu thời gian trả về không giống với thời gian hiện tại của bạn, có thể là do máy chủ của bạn ở một quốc gia khác hoặc được thiết lập cho một múi giờ khác.

Vì vậy, bạn có thể sử dụng múi giờ để thiết lập thời gian chính xác theo vị trí của bạn.

Ví dụ dưới đây đặt múi giờ thành "Asia/Ho_Chi_Minh" (múi giờ của Việt Nam), sau đó xuất thời gian hiện tại theo định dạng đã chỉ định:

<?php    
   date_default_timezone_set("Asia/Ho_Chi_Minh");    
   echo "The time is " . date("h:i:sa");    
?>

Tạo ngày giờ với hàm mktime()

Tham số tùy chọn timestamp trong hàm date() chỉ định thời gian cần định dạng. Nếu bỏ qua, ngày và giờ hiện tại sẽ được sử dụng (như trong các ví dụ ở trên).

Hàm mktime() trong PHP trả về thời gian Unix (Unie timestamp) cho một ngày. Thời gian Unix chứa số giây giữa Unix Epoch (ngày 1 tháng 1 năm 1970 00:00:00 GMT) và thời gian được chỉ định.

Cú pháp


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

Ví dụ dưới đây sẽ sử dụng hàm date() để định dạng ngày giờ được tạo từ hàm mktime():

<?php
   $d = mktime(11, 14, 54, 05, 04, 2020);
   echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>

Đây là kết quả:

Created date is 2020-05-04 11:14:54am

Tạo ngày giờ từ chuỗi với hàm strtotime()

Hàm strtotime() trong PHP được sử dụng để chuyển đổi chuỗi ngày có thể đọc được của con người thành thời gian Unix (Unix timestamp - số giây kể từ ngày 1 tháng 1 năm 1970 00:00:00 GMT).

Cú pháp


strtotime(time, now)

Ví dụ dưới đây sẽ sử dụng hàm date() để định dạng ngày giờ được tạo từ hàm strtotime():

<?php
   $d = strtotime("10:30pm May 04 2020");
   echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>

Đây là kết quả:

Created date is 2020-05-04 10:30:00pm

PHP khá thông minh về việc chuyển đổi một chuỗi thành một ngày, vì vậy bạn có thể đặt các giá trị khác nhau:

<?php
   $d = strtotime("tomorrow");
   echo date("Y-m-d h:i:sa", $d) . "<br>";

   $d = strtotime("next Saturday");
   echo date("Y-m-d h:i:sa", $d) . "<br>";

   $d = strtotime("+3 Months");
   echo date("Y-m-d h:i:sa", $d) . "<br>";
?>

Đây có thể là kết quả mà bạn sẽ nhận được:

2020-05-05 12:00:00am
2020-05-09 12:00:00am
2020-08-04 04:10:59am

Tuy nhiên hàm strtotime() không hoàn hảo, vì vậy hãy nhớ kiểm tra kỹ các chuỗi bạn truyền vào cho nó.

Ví dụ về ngày trong PHP

Ví dụ dưới đây sẽ xuất ra sáu ngày thứ bảy tiếp theo:

<?php
   $startdate = strtotime("Saturday");
   $enddate = strtotime("+6 weeks", $startdate);

   while ($startdate < $enddate) {
      echo date("M d", $startdate) . "<br>";
      $startdate = strtotime("+1 week", $startdate);
   }
?>

Đây có thể là kết quả bạn sẽ nhận được:

May 09
May 16
May 23
May 30
Jun 06
Jun 13

Ví dụ dưới đây xuất ra số ngày cho đến ngày 4 tháng 7:

<?php
   $d1 = strtotime("July 04");
   $d2 = ceil(($d1-time())/60/60/24);
   echo "There are " . $d2 ." days until 4th of July.";
?>

Đây có thể là kết quả bạn sẽ nhận được:

There are 61 days until 4th of July.

Nếu Comdy hữu ích và giúp bạn tiết kiệm thời gian

Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.

Lập Trình PHP