PHP - Date & Time

Thư viện tích hợp sẵn của PHP có một loạt các hàm giúp xử lý và thao tác thông tin ngày và giờ một cách lập trình. Các đối tượng Ngày và Giờ trong PHP có thể được tạo ra bằng cách truyền vào một chuỗi đại diện cho thông tin ngày/giờ, hoặc từ thời gian hiện tại của hệ thống.

PHP cung cấp lớp DateTime định nghĩa một số phương thức. Trong chương này, chúng ta sẽ có cái nhìn chi tiết về các phương thức liên quan đến Ngày và Giờ có sẵn trong PHP.

Các tính năng ngày/giờ trong PHP thực hiện lịch ISO 8601, áp dụng các quy tắc về ngày nhuận hiện tại từ trước khi lịch Gregory được áp dụng. Thông tin ngày và giờ được lưu trữ nội bộ dưới dạng một số 64-bit.

Getting the Time Stamp with time()

Hàm time() của PHP cung cấp cho bạn tất cả thông tin cần thiết về ngày và giờ hiện tại. Nó không yêu cầu tham số nào nhưng trả về một số nguyên.

time(): int

Số nguyên được trả về bởi time() đại diện cho số giây đã trôi qua kể từ nửa đêm GMT vào ngày 1 tháng 1 năm 1970. Khoảnh khắc này được gọi là thời điểm UNIX, và số giây đã trôi qua kể từ lúc đó được gọi là dấu thời gian.

<?php
   print time();
?>

Nó sẽ tạo ra output

1699421347

Chúng ta có thể chuyển đổi dấu thời gian thành một dạng mà con người dễ hiểu.

Converting a Time Stamp with getdate()

Hàm getdate() chấp nhận một dấu thời gian (time stamp) tùy chọn và trả về một mảng liên kết chứa thông tin về ngày. Nếu bạn bỏ qua dấu thời gian, nó sẽ hoạt động với dấu thời gian hiện tại được trả về bởi hàm time().

Bảng dưới đây liệt kê các phần tử có trong mảng được trả về bởi getdate().

Sr.No Key & Description Example
1 seconds Seconds past the minutes (0-59) 20
2 minutes Minutes past the hour (0 - 59) 29
3 hours Hours of the day (0 - 23) 22
4 mday Day of the month (1 - 31) 11
5 wday Day of the week (0 - 6) 4
6 mon Month of the year (1 - 12) 7
7 year Year (4 digits) 1997
8 yday Day of year ( 0 - 365 ) 19
9 weekday Day of the week Thursday
10 month Month of the year January
11 0 Timestamp 948370048

Bây giờ bạn có toàn quyền kiểm soát về ngày và giờ. Bạn có thể định dạng ngày và giờ này theo bất kỳ định dạng nào bạn muốn.

Example

Hãy xem đoạn sau đây example

<?php
   $date_array = getdate();

   foreach ( $date_array as $key => $val ){
      print "$key = $val\n";
   }
   $formated_date  = "Today's date: ";
   $formated_date .= $date_array['mday'] . "-";
   $formated_date .= $date_array['mon'] . "-";
   $formated_date .= $date_array['year'];

   print $formated_date;
?>

Nó sẽ tạo ra output

seconds = 0
minutes = 38
hours = 6
mday = 8
wday = 3
mon = 11
year = 2023
yday = 311
weekday = Wednesday
month = November
0 = 1699421880
Today's date: 8-11-2023

Converting a Time Stamp with date()

Hàm date() trả về một chuỗi đã định dạng đại diện cho một ngày. Bạn có thể kiểm soát một lượng lớn định dạng mà hàm date() trả về bằng cách sử dụng một tham số chuỗi mà bạn phải truyền cho nó.

date(string $format, ?int $timestamp = null): string

Hàm date() có thể nhận một dấu thời gian tùy chọn; nếu không có, thì ngày và giờ hiện tại sẽ được sử dụng. Bất kỳ dữ liệu nào khác bạn đưa vào chuỗi định dạng được truyền cho hàm date() sẽ được bao gồm trong giá trị trả về.

Bảng dưới đây liệt kê các mã mà một chuỗi định dạng có thể chứa −

Sr.No Format & Description Example
1 a 'am' or 'pm' lowercase pm
2 A 'AM' or 'PM' uppercase PM
3 d Day of month, a number with leading zeroes 20
4 D Day of week (three letters) Thu
5 F Month name January
6 h Hour (12-hour format - leading zeroes) 12
7 H Hour (24-hour format - leading zeroes) 22
8 g Hour (12-hour format - no leading zeroes) 12
9 G Hour (24-hour format - no leading zeroes) 22
10 i Minutes ( 0 - 59 ) 23
11 j Day of the month (no leading zeroes 20
12 l (Lower 'L') Day of the week Thursday
13 L Leap year ('1' for yes, '0' for no) 1
14 m Month of year (number - leading zeroes) 1
15 M Month of year (three letters) Jan
16 r The RFC 2822 formatted date Thu, 21 Dec 2000 16:01:07 +0200
17 n Month of year (number - no leading zeroes) 2
18 s Seconds of hour 20
19 U Time stamp 948372444
20 y Year (two digits) 06
21 Y Year (four digits) 2006
22 z Day of year (0 - 365) 206
23 Z Offset in seconds from GMT +5

Example

Hãy xem đoạn sau đây example

<?php
   print date("m/d/y G.i:s \n", time()) . PHP_EOL;
   print "Today is ";
   print date("j of F Y, \a\\t g.i a", time());
?>

Nó sẽ tạo ra output

11/08/23 11.23:08

Today is 8 2023f November 2023, at 11.23 am

Hy vọng bạn đã hiểu rõ cách định dạng ngày và giờ theo yêu cầu của bạn. Để tham khảo, danh sách đầy đủ tất cả các hàm ngày và giờ được cung cấp trong PHP Date & Time Functions .