Hướng dẫn dùng y+y+y trong PHP

Hướng dẫn dùng y+y+y trong 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 . '
'; }

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

Để định dạng ngày và giờ trong PHP, chúng ta sử dụng hàm date()

Hàm date() trong PHP


Hàm date() trong PHP được sử dụng để định dạng lại ngày tháng năm, giờ ... và hiển thị theo cách dễ dọc hơn

Cú pháp

date(format, timestamp)

Tham sốDescription
format Bắt buột. Chỉ định định dạng của timestamp
timestamp Tùy chọn. Chỉ định một timestamp. Mặc định là ngày và giờ hiện tại

Timestamp là một chuỗi các ký tự, biểu thị ngày và/ hoặc thời gian tại một sự kiện nhất định xảy ra.

Hàm date() - Các tham số ngày tháng


Tham số format là bắt buộc của hàm date(), nó 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 cho tham số trong ngày tháng.

  • 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ữ hoa là 'L') - Đạ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 vào 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.

Ví dụ


echo "Hôm nay là ".date("Y/m/d")."
"
; echo "Hôm nay là ".date("Y.m.d")."
"
; echo "Hôm nay là ".date("Y-m-d")."
"
; echo "Hôm nay là ".date("l"); ?>

Xem kết quả


Sử dụng hàm date() để tự động cập nhật năm bản quyền trên trang website của chúng ta.

Ví dụ

Copyright © 2010 -  echo date("Y"); ?>

Xem kết quả

Hàm date() - Các tham số thời gian


Dưới đây là một số ký tự thường được sử dụng cho tham số thời gian.

  • H - định dạng 24 giờ của một ngày (00 đến 23)
  • h - Định dạng 12 giờ của một ngày với các số 0 ở đầu (01 đến 12)
  • i - Các phút có số 0 ở đầu (00 đến 59)
  • s - Giây với các số 0 ở đầu (00 đến 59)
  • a - Viết thường là Ante meridiemPost meridiem (sáng hoặc chiều)

Ví dụ bên dưới xuất ra thời gian hiện tại ở định dạng được chỉ định.

Ví dụ


echo "Bây giờ là ".date("h:i:s");
?>

Xem kết quả

Lưu ý là hàm date() trong PHP sẽ trả về ngày/ giờ hiện tại của máy chủ!

Cài đặt múi giờ


Nếu thời gian nhận lại từ mã PHP không chính xác, có thể do máy chủ của chúng ta ở quốc gia khác hoặc được thiết lập cho múi giờ khác.

Vì vậy, nếu cần thời gian chính xác theo một vị trí cụ thể, chúng ta có thể đặt múi giờ muốn sử dụng.

Ví dụ bên dưới đặt múi giờ thành "Asia/ Ho_Chi_Minh", sau đó xuất ra thời gian hiện tại ở định dạng được chỉ định.

Ví dụ


date_default_timezone_set("Asia/Ho_Chi_Minh");
echo "Bây giờ là ".date("h:i:sa");
?>

Xem kết quả

Tạo một ngày với hàm mktime()


Tham số timestamp là tùy chọn trong hàm date(). chỉ định một dấu thời gian. 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 PHP mktime() trả về dấu thời gian Unix cho một ngày. Dấu thời gian Unix chứa số giây giữa Kỷ nguyên Unix (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ụ bên dưới tạo ngày và giờ với hàm date() từ một số tham số trong hàm mktime().

Ví dụ


$d = mktime(11, 23, 34, 11, 23, 2019);
echo "Ngày giờ được tạo là ".date("Y/m/d h:i:s", $d);
?>

Xem kết quả

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


Hàm PHP strtotime() được sử dụng để chuyển đổi một chuỗi ngày có thể đọc được thành một dấu thời gian Unix (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ụ bên dưới tạo ngày và giờ từ hàm strtotime().

Ví dụ


$d = strtotime("10:30pm April 15 2014");
echo "Ngày giờ được tạo là ".date("Y/m/d h:i:sa", $d);
?>

Xem kết quả

PHP khá thông minh trong việc chuyển đổi một chuỗi thành một ngày tháng, vì vậy chúng ta có thể đặt vào các giá trị khác nhau.

Ví dụ


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

Xem kết quả

Tuy nhiên, hàm strtotime() không phải là hoàn hảo, vì vậy hãy nhớ kiểm tra các chuỗi chúng ta đặt vào đó.

Một số ví dụ về ngày tháng


Ví dụ dưới đây xuất ra các ngày trong sáu ngày thứ Bảy tiếp theo.

Ví dụ


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

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

Xem kết quả

Ví dụ bên dưới tính ra số ngày cho đến ngày 2 tháng 9.

Ví dụ


$d1=strtotime("Sep 02");
$d2=ceil(($d1-time())/60/60/24);
echo "Còn tới " . $d2 ." ngày, để tới ngày 02 tháng 09.";
?>

Xem kết quả

Tham chiếu ngày giờ PHP


Để có tài liệu tham khảo đầy đủ về tất cả các hàm ngày tháng, hãy truy cập Tài liệu tham khảo ngày tháng hoàn chỉnh trong PHP.

Tài liệu tham khảo chứa một mô tả ngắn gọn và các ví dụ sử dụng cho mỗi hàm!