Trong lập trình xử lý ngày tháng luôn là một phần rất quan trọng, mỗi ngôn ngữ lập trình lại có một các xử lý ngày tháng khác nhau. Trong đó, PHP cũng cung cấp nhiều chức mạnh mẽ để xử lý ngày tháng một cách linh hoạt và tiện lợi. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách xử lý ngày tháng trong PHP.

1. Tìm hiểu về ngày tháng trong PHP

Trong các dự án để làm việc với ngày tháng, việc đầu tiên cần làm là thiết lập time_zone cho nó. Dưới đây chúng ta sẽ tìm hiểu về cách thiết lập time_zone cho ngày tháng trong PHP.

 - Cú pháp:

<?php
// date_default_timezone_set('time_zone');
date_default_timezone_set('Asia/Ho_Chi_Minh'); // timezone Việt Nam
// Danh sách time_zone
$timezone = DateTimeZone::listIdentifiers() ;
foreach ($timezone as $item){
    echo $item . '<br/>';
}

Với việc thiết lập time_zone như trên nó sẽ ảnh hưởng đến toàn bộ các hàm, phương thức xử lý với chuỗi được sử dụng trong khi thực thi chương trình

Ngày tháng trong PHP được đại diện bởi các đối tượng hoặc chuỗi dữ liệu. Có hai kiểu chính để biểu diễn ngày tháng trong PHP: kiểu chuỗi và kiểu đối tượng.

 - Kiểu chuỗi
Trong PHP kiểu chuỗi là cách phổ biến nhất để biễu diễn ngày tháng. Ngày tháng được biểu diễn bằng một chuỗi có định dạng cụ thể. Các định dạng thường phụ thuộc vào nhu cầu của người dùng cũng như yêu cầu của hệ thống, các định dạng phổ biến thường được sử dụng bao gồm:

  • 'Y-m-d' (năm-tháng-ngày)
  • 'd/m/Y' (ngày/tháng/năm)
  • 'H:i:s' (giờ:phút:giây)
  • Và nhiều định dạng khác

Ví dụ:

<?php
$dateString = '2023-06-27';

  - Kiểu đối tượng
Song song với kiểu chuỗi đó là kiểu đối tượng. Trong PHP, ta có thể sử dụng lớp DateTime để đại diện cho ngày tháng. Đồng thời lớp DateTime cũng cung cấp cho người dùng các phương thức và thuộc tính hữu ích để làm việc với ngày tháng, trong đó bao gồm cả tính toán và định dạng ngày tháng trong PHP.

Ví dụ:

<?php
$dateObject = new DateTime('2023-06-27');

Sử dụng kiểu đối tượng, chúng ta có thể thực hiện các thao tác như cộng/trừ ngày, so sánh ngày, định dạng ngày và nhiều hơn nữa.

PHP cung cấp các hàm và phương thức hữu ích để làm việc với ngày tháng, bao gồm hàm date() để định dạng ngày tháng thành chuỗi, hàm strtotime() để chuyển đổi chuỗi ngày tháng thành dạng Unix timestamp, và nhiều hàm khác như mktime(), strtotime(), date_parse(), v.v.

Làm việc hiệu quả với ngày tháng là rất quan trọng trong lập trình, và PHP cung cấp các công cụ mạnh mẽ để xử lý nhu cầu này.

>>> Xem thêm bài viết về PHP:

- Tìm hiểu về hàm preg_match_all trong PHP

- Xử lý hàm date (ngày tháng) trong PHP

- Giới hạn ký tự hiển thị và chức năng read more trong PHP

2. Xử lý ngày tháng trong PHP

a. Lấy ngày giờ hiện tại:
Để lấy ngày giờ hiện tại trong PHP, chúng ta có thể dùng hàm date(). Hàm này cho phép chúng ta định dạng ngày giờ theo chuỗi có sẵn hoặc tùy chỉnh

<?php
$currentDateTime = date('Y-m-d H:i:s');
echo "Ngày giờ hiện tại: " . $currentDateTime;

b. Định dạng ngày tháng:
PHP cung cấp cho chúng ta một số ký tự định dạng để hiển thị thời gian theo các chuẩn khác nhau. Dưới đây ta sẽ tìm hiểu một số ví dụ:

  • d: Ngày trong tháng (01 - 31)
  • m: Tháng trong năm (01 - 12)
  • Y: Năm 4 chữ số (ví dụ: 2023)
  • H: Giờ trong ngày (00 - 23)
  • i: Phút trong giờ (00 - 59)
  • s: Giây trong phút (00 - 59)
<?php
$date = '2023-06-27';
$formattedDate = date('d/m/Y', strtotime($date));
echo "Ngày được định dạng: " . $formattedDate;

c. Cộng/trừ ngày:
Trong PHP, lớp DateTime và các phương thức liên quan sẽ được sử dụng cho việc tính toán thời gian trong PHP.

<?php
$date = new DateTime('2023-06-27');
$date->modify('+1 day');
echo "Ngày sau khi thay đổi: " . $date->format('Y-m-d'); // 2023-06-28

$interval = new DateInterval('P2D'); // Cộng thêm 2 ngày
date_add($date, $interval);
echo "Ngày sau khi cộng thêm 2 ngày: " . date_format($date, 'Y-m-d'); // 2023-06-30

$interval = new DateInterval('P2D'); // Trừ đi 2 ngày
date_sub($date, $interval);
echo "Ngày sau khi trừ đi 2 ngày: " . date_format($date, 'Y-m-d'); // 2023-06-28

Trong ví dụ trên chúng ta đã khai báo giá trị $interval = new DateInterval('P2D'); với cú pháp này sẽ tạo ra cho chúng ta một đối tượng DateInterval trong PHP để đại diện cho một khoảng thời gian.
Với ví dụ trên chuỗi 'P2D' để chỉ định khoảng thời gian là 2 ngày, chuỗi này tuân thủ theo định dạng chuẩn ISO 8601 cho khoảng thời gian

  • 'P' đại diện cho "period" (khoảng thời gian).
  • 2 đại diện cho số lượng của khoảng thời gian, trong trường hợp này là 2.
  • 'D' đại diện cho ngày.

Tương tự các ký tự trên chúng ta cũng có thể sử dụng các chuỗi tương tự để tạo ra các khoảng thời gian khác nhau, ví dụ 'P3W' (3 tuần), 'P1M' (1 tháng), 'P1Y' (1 năm), ... Cùng với đó, chúng ta cũng có thể kết hợp các thành phần như ngày, giờ, phút và giây, ví dụ 'P1DT3H30M' (1 ngày, 3 giờ, 30 phút).

d. So sánh ngày:
PHP hỗ trợ chúng ta các phương thức và toán tử so sánh hai giá trị thời gian.

  • Trong đó, một phương thức hữu ích là phương thức diff() của lớp DateTime, nó sẽ cho phép ta tính toán số ngày chênh lệnh giữa hai ngày.
<?php
$date1 = new DateTime('2023-06-27');
$date2 = new DateTime('2023-06-30');

if ($date1 < $date2) {
    echo "Ngày 1 đến trước ngày 2";
} elseif ($date1 > $date2) {
    echo "Ngày 1 đến sau ngày 2";
} else {
    echo "Ngày 1 và ngày 2 bằng nhau";
}

$diff = $date1->diff($date2);
echo "Số ngày chênh lệch: " . $diff->days;
  • Tương tự với diff(), hàm date_diff() cũng là một hàm hữu ích để so sánh hai giá trị thời gian trong PHP. Nó trả về một đối tượng DateInterval chứa thông tin về số ngày, giờ, phút, giây, ... chênh lệch giữa hai ngày.
<?php
$date1 = date_create('2023-06-27');
$date2 = date_create('2023-07-02');
$diff = date_diff($date1, $date2);
echo "Số ngày chênh lệch: " . $diff->days;

d. Chuyển đổi thời gian sang INT:
Hàm strtotime() cho phép chúng ta chuyển đổi chuỗi ngày tháng sang kiểu INT

<?php
$dateString = '2023-06-27';
$timestamp = strtotime($dateString);
echo "Timestamp: " . $timestamp;

e. Tạo đối tượng DateTime từ một chuỗi:
Hàm date_create() được sử dụng để tạo một đối tượng DateTime từ một chuỗi ngày tháng. Điều này cho phép bạn thực hiện các phép tính và định dạng ngày tháng dễ dàng hơn.

<?php
$dateString = '2023-06-27';
$dateObject = date_create($dateString);
echo "Ngày: " . date_format($dateObject, 'Y-m-d');

f. Phân tích một chuỗi ngày tháng Hàm date_parse() cho phép chúng ta phân tích một chuỗi ngày tháng. Hàm này trả ra một mảng bao gồm các thành phần của ngày tháng như: ngày, tháng, năm, giờ, phút, giây, ...

<?php
$dateString = '2023-06-27';
$dateComponents = date_parse($dateString);
echo "Năm: " . $dateComponents['year'];

Tổng kết

Việc hiểu và sử dụng các phương thức này sẽ giúp bạn xử lý và làm việc với ngày tháng một cách hiệu quả trong ứng dụng PHP của mình. Bạn có thể linh hoạt thực hiện các phép tính, định dạng và so sánh ngày tháng để đáp ứng nhu cầu của ứng dụng. Trong PHP có rất nhiều hàm và phương thức cho phép chúng ta làm việc với ngày tháng. Các bạn có thể tham khảo thêm các hàm và phương khác để làm việc với ngày tháng trong PHP trên trang chủ của PHP ở đây


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: