So sánh 2 kiểu dữ liệu datetime utf javascript năm 2024

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 (
    [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  
    
    )
    / 6 trả về 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 (
    [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  
    
    )
    / 7 trả về DateTimeZone, thông tin về múi giờ
  • // 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  
    
    )
    / 8 trả về chuỗi chứa ngày tháng ... theo định dạng viết trong $format_string

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 >, <, == , != để so sánh ngày.

getdate([$timestamp]);

3

Tính khoảng thời gian giữa hai DateTime

Sử dụng hàm diff, nó trả về một đói tượng lớp DateInterval, chứa các thuộc tính cho biết khoảng thời gian giữa hai DateTime

getdate([$timestamp]);

4

Như vậy hai ngày trên cách nhau 3890 ngày, tức cách nhau 10 năm 7 tháng 23 ngày ...

Hãy áp dụng tính xem đến hôm nay bạn đã sinh ra được bao nhiêu ngày?

Thêm hoặc bớt một khoảng thời gian vào DateTime

Bạn cần khởi tạo đối tượng DateInterval, sau đó thêm vào DateTime bằng phương thức add, hoặc bớt đi bằng phương thức sub. Khởi tạo DateInterval bằng cú pháp

date($format,$timestamp) 0

Chuỗi $string_duration có cú pháp như sau, bắt đầu bằng chữ P, tiếp theo là các khoảng thời gian, mỗi khoảng thời gian bắt đầu bằng một số nguyên theo sau là ký hiệu cho biết loại khoảng thời gian đó (có các ký hiệu Y, M, D, W, H, M, S tương ứng là năm, tháng, ngày, tuần, giờ, phút, giây), ví dụ chuỗi định dạng: