Hàm time[] trả về thời gian unix timestamp hiện tại của hệ thống, tức là trả về là một số nguyên bằng số giây tính từ thời điểm bắt đầu của kỷ nguyên Unix [lúc 0 giờ, 0 phút, 0 giây ngày 1 tháng 1 năm 1970 - GMT - Lưu ý thời điểm này tính với múi giờ GMT 0, không phải thời gian địa phương]
Từ giời gian Unix Timestamp hiện tại, bạn có thể dùng hàm getdate, date để lấy thông tin ngày - giờ ...
$time = time[];
$datetimeinfo = getdate[$time];
echo 'Thời gian hiện tại [UT]:'. $time . '
';
echo "
" . print_r[$datetimeinfo, true] . ""; / In ra: Thời gian hiện tại [UT]:1662445670 Array [
[seconds] => 50
[minutes] => 27
[hours] => 6
[mday] => 6
[wday] => 2
[mon] => 9
[year] => 2022
[yday] => 248
[weekday] => Tuesday
[month] => September
[0] => 1662445670
]
/ Khái niệm về timestamp xem thêm tại: TIMESTAMP.
Hàm microtime tương tự time, nhưng độ chính xác mili giây.
Hàm getdate lấy thông tin ngày tháng
Hàm getdate trả về một mảng chứa các thông tin ngày tháng, với tham số $timestamp là thời gian unix cần chuyển đổi nếu thiếu tham số này hàm getdate lấy timestamp hiện tại của hệ thống. Cú pháp:
getdate[[$timestamp]];
Mảng trả về chứa thông tin ngày tháng có các phần tử tương ứng với key của mảng mang ý nghĩa giải thích ở ví dụ sau:
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /Hàm date[] định dạng ngày giờ từ Unix timestamp trong PHP
Hàm
getdate[[$timestamp]];
7 trả về một chuỗi biểu diễn ngày tháng. Chuỗi này chuyển đổi từ thời gian Unix truyền vào. Cú pháp của hàm như sau:
date[$format,$timestamp] Trong đó:
getdate[[$timestamp]];
8 là thời gian timestamp cần chuyển đổi, nếu thiếu tham số này hàm
getdate[[$timestamp]];
7 lấy thời gian hiện tại của hệ thống để chuyển đổi.
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /0: là chuỗi chứa định dạng, nó xác định chuỗi kết quả trả về sẽ có dữ liệu gì, tham khảo các ký hiệu sau để viết chuỗi $format:
Bản định dạng cho hàm date[] Ký hiệu Diễn giả dữ liệu xuất ra Ví dụ d Ngày trong tháng [2 số] 01 đến 31 w Ngày trong tuần [CN = 0] 0 đến 6 D Tên ngày tuần Mon đến Sun j Ngày trong tháng [1 số] 1 đến 31 l Ngày tuần [tên đầy đủ] Sunday, Saturday z Ngày trong năm [bắt đầu từ 0] 0 đến 365 F Tên tháng đầy đ January,December m Tháng [2 số] 01 đến 12 M Tên ngắn của tháng Jan, Dec n Tháng [1 số] 1 đến 12 t Số ngày trong tháng 28, 31 Y Năm 1999, 2000 ... y Năm [2 số] 99, 79 a Thời gian sáng / chiều am hoặc pm A Thời gian sáng / chiều AM, PM g Giờ [định dạng theo 12 khoảng] 1 đến 12 G Giờ [định dạng theo 24] 0 đến 23 h Giờ [12 khoảng] 01 đến 12 H Giờ [2 số chia theo 24 khoảng] 00 đến 23 i Phút 00 đến 59 s Giây 00 đến 59
Ví dụ:
// Chuỗi này xuất ra các kết quả gồm giờ:phút:giây ngày/tháng/năm: // "12:20:30 20/11/20" $format = "G:i:s d/m/y"; echo date[$format, time[]]; // Out: 6:58:58 06/09/22 // Trong chuỗi định dạng, // để xuất ra ký tự mà đã dùng làm định dạng thì thêm dấu \ echo date['\i\t \i\s \t\h\e jS \d\a\y.']; // it is the 6th day.
Lớp DateTime trong PHP
Lớp DateTime trong PHP chứa thông tin về thời gian [ngày, tháng, giờ ...] và các chức năng liên quan đến tính toán thời gian, chuyển đổi thời gian ...
Để khởi tạo một đối tượng DateTime mới dùng toán tử new:
// Đối tượng DateTime mới với dự liệu thời gian hiện tại, múi giờ hệ thống [Webserver] $datetime = new DateTime[]; var_dump[$datetime]; / public 'date' => string '2022-09-06 16:20:04.311900' [length=26] public 'timezone_type' => int 3 public 'timezone' => string 'UTC' [length=3] / Bạn thấy đối tượng có chứa liệu là chuỗi ngày tháng và thông tin timezone. Khởi tạo như trên, dữ liệu là thời gian hiện tại, múi giờ hiện tại của hệ thống. Mặc dù nhịn thấy các thuộc tính date, timezone_type, timezone là public khi dùng var_dump, nhưng bạn không truy cập trực tiếp được, có thể là bug của PHP bug 49382
Ngoài ra một số cách khởi tạo khác bằng cách truyền tham số
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /1, trong đó là chuỗi có thể là:
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /2 [hoặc không tham số] - lấy thời gian hiện tại để khởi tạo.
$datetime = new DateTime['now'];
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /3 Truyền vào một chuỗi bắt đầu bằng @ và giá trị timestamp để khởi tạo bằng timestamp
$datetime = new DateTime['@1662445670']; $datetime = new DateTime['@'.time[]];
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /4 hoặc dùng hàm
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /5 Một chuỗi ngày tháng với định dạng phù hợp
$datetime = new DateTime['12/22/2020 10:00 PM']; $datetime = new DateTime['@'.time[]];
Bạn có thể khởi tạo bằng phương thức DateTime::createFromFormat[$format, $s_datetime] với định dạng ngày tháng tùy chọn.
$datetime = DateTime::createFromFormat['d/m/y H:i:s', '1/1/20 00:00:00'];
Đọc dữ liệu từ DateTime
Có các phương thức sau hay dùng để lấy dữ liệu từ DateTime:
- // Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi
$today = getdate[];
print_r[$today];
/
Kết quả:
Array
[
] / 6 trả về timestamp[seconds] => 40 // Giây [minutes] => 58 // Phút [hours] => 21 // Giờ [mday] => 17 // Ngày [wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...] [mon] => 6 // Tháng [year] => 2003 // Năm [yday] => 167 // Ngày của năm [weekday] => Tuesday // Thứ [month] => June // Tháng [0] => 1055901520 // Timestamp
- // Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi
$today = getdate[];
print_r[$today];
/
Kết quả:
Array
[
] / 7 trả về DateTimeZone, thông tin về múi giờ[seconds] => 40 // Giây [minutes] => 58 // Phút [hours] => 21 // Giờ [mday] => 17 // Ngày [wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...] [mon] => 6 // Tháng [year] => 2003 // Năm [yday] => 167 // Ngày của năm [weekday] => Tuesday // Thứ [month] => June // Tháng [0] => 1055901520 // Timestamp
- // Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi
$today = getdate[];
print_r[$today];
/
Kết quả:
Array
[
] / 8 trả về chuỗi chứa ngày tháng ... theo định dạng viết trong $format_string[seconds] => 40 // Giây [minutes] => 58 // Phút [hours] => 21 // Giờ [mday] => 17 // Ngày [wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...] [mon] => 6 // Tháng [year] => 2003 // Năm [yday] => 167 // Ngày của năm [weekday] => Tuesday // Thứ [month] => June // Tháng [0] => 1055901520 // Timestamp
getdate[[$timestamp]];
0
Thiết lập Timezone [DateTimeZone] và Date, Time, cho DateTime
Đối tượng DateTime có chứa thông tin Timezone [múi giờ] UTC, để thiết lập Timezone trước tiên bạn tạo ra đối tượng lớp
// Hàm getdate thiếu tham số, nó sẽ lấy timestamp hiện tại làm tham số chuyển đổi $today = getdate[]; print_r[$today]; / Kết quả: Array [
[seconds] => 40 // Giây
[minutes] => 58 // Phút
[hours] => 21 // Giờ
[mday] => 17 // Ngày
[wday] => 2 // Ngày tuần [0 = CN, 1 = Thứ 2, 2 = Thứ 3 ...]
[mon] => 6 // Tháng
[year] => 2003 // Năm
[yday] => 167 // Ngày của năm
[weekday] => Tuesday // Thứ
[month] => June // Tháng
[0] => 1055901520 // Timestamp
] /9 với tham số là chuỗi Timezone mà PHP hỗ trợ [danh sách các vùng tại đây PHP Timezones]
setTimezone
Sau khi có đối tượng DateTimeZone thì thiết lập cho DateTime bằng phương thức setTimezone
getdate[[$timestamp]];
1
setDate, setTime
Sau khi khởi tạo DateTime, bạn có thể thay đổi ngày - tháng - nằm bằng hàm setDate, thay đổi giờ-phút-giây với hàm setTime, những hàm này luôn trả về đối tượng $datetime, nên trong code bạn có thể viết một cách liên tục theo chuỗi [fluent interface].
getdate[[$timestamp]];
2
So sánh ngày tháng DateTime
Bạn có thể dùng các toán tử so sánh >,