Một số hàm (functions) xử lý Ngày tháng (datetime) trong PHP

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

Dùng để xác lập múi giờ trong việc xử lý ngày tháng trong PHP.
<?php
// Thiết lập Múi giờ Nhật bản
date_default_timezone_set('Asia/Tokyo');

// Thiết lập Múi giờ Việt nam
date_default_timezone_set('Asia/Ho_Chi_Minh');
?>
  • Danh sách timezone vùng Asia của PHP: https://www.php.net/manual/en/timezones.asia.php
  • Khi áp dụng múi giờ thì sẽ tác động đến tất cả các hàm xử lý ngày tháng sau đó.
  • Liệt kê tất cả các TimeZones được hỗ trợ trong PHP
<?php
// Liệt kê danh sách tất cả các TimeZones được hỗ trợ trong PHP
$timezones = DateTimeZone::listIdentifiers() ;
foreach ($timezones as $item){
    echo $item . '<br/>';
}
?>

2. Hàm time()

Dùng để hiển thị Ngày giờ hiện tại theo kiểu số nguyên TIMESTAMPS.
  • Timestamps: là con số nguyên Integer hiển thị số giây tổng số giây  tính từ 0 giờ 0 phút 0 giây ngày 0 tháng 0 năm 0 đến thời điểm hiện tại.
Ví dụ:
<?php
// Hiển thị ngày giờ hiện tại theo kiểu TIMESTAMPS
// Ví dụ:
//    Vào lúc 27/07/2022 (18:00:53) ⇒ 1658919653 (giây)
echo time();
?>

3. Hàm date()

Nếu bạn cần hiển thị ngày tháng hiện tại hay ở thời gian nào đó thì có thể sử dụng hàm date(), nó sẽ hiển thị ra với định dạng ngày tháng theo quy tắc bạn đã thiết lập. Ví dụ:
<?php
// Hiển thị ngày giờ hiện tại
echo date('d/m/Y H:i:s');
?>
Với các tham số định dạng format Ngày tháng như sau:
  • d - định dạng ngày bao gồm 2 chữ số vd: 01, 19
  • m - định dạng tháng
  • Y - định dạng năm dạng 1989, 2022
  • h - định dạng giờ dạng 12 giờ
  • H- định dạng giờ dạng 24 giờ
  • i - định dạng phút
  • s - định dạng giây

Định dạng ngày tháng trong MySQL

Để lưu đúng định dạng ngày tháng trong MySQL thì cần lưu trữ theo đúng định dạng ISO năm-tháng-ngày-giờ(24)-phút-giây
<?php
// Hiển thị ngày giờ theo định dạng MySQL
echo date('Y-m-d H:i:s');
?>

4. Chuyển đổi Thời gian sang kiểu INT

Hàm này dùng để chuyển chuỗi ký tự Ngày tháng sang dạng Timestamp Ví dụ:
<?php
// Chuyển đổi ngày giờ hiện tại sang kiểu INT
// Kiểu TimeStamps
echo strtotime( date('Y-m-d H:i:s') );
?>

5. Xử lý công trừ ngày tháng với hàm mktime()

Hàm này sẽ tính toán cho ra ngày chính xác với các tham số truyền vào, cú pháp hàm như sau:
<?php
mktime ($hour, $minute, $second, $month, $day , $year);
Hàm này sẽ trả về thời gian kiểu Timestamp (int), nên cần phải sử dụng hàm date() để chuyển đổi ra định dạng mong muốn. Ví dụ:
<?php
// Lấy ngày giờ hiện tại
$hien_tai_ngay = date('d');
$hien_tai_thang = date('m');
$hien_tai_nam = date('Y');
$hien_tai_gio = date('H');
$hien_tai_phut = date('i');
$hien_tai_giay = date('s');

// Ví dụ: 27/07/2022 21:30:15
// Lấy ngày hiện tại cộng thêm 10 ngày thì sẽ là ngày mấy?
$ngay_kieu_timestamp = mktime($hien_tai_gio, $hien_tai_phut, $hien_tai_giay, $hien_tai_thang, $hien_tai_ngay + 10, $hien_tai_nam);

// Kết quả: 06/08/2022 21:30:15
echo date('d/m/Y H:i:s', $ngay_kieu_timestamp);
?>