Bài 18: Ngày (Date) và giờ (time) trong PHP

“Hãy hòa nhã với những kẻ dở hơi. Ai biết được ngày sau bạn có thể phải làm việc cho một kẻ như vậy.”

Bill Gates

Microsoft

Trong bài học về PHP này, bạn sẽ học cách trích xuất hoặc định dạng ngày và giờ trong PHP.

Hàm date và hàm time trong PHP

Hàm date() trong PHP

Hàm date () của PHP chuyển đổi dấu thời gian thành ngày và giờ dễ đọc hơn.

Máy tính lưu trữ ngày và giờ theo định dạng có tên là Dấu thời gian UNIX, tính thời gian là số giây kể từ khi bắt đầu thời kỳ Unix (midnight Greenwich có nghĩa là vào ngày 1 tháng 1 năm 1970 tức là ngày 1 tháng 1 năm 1970 00:00:00 GMT)

Vì đây là định dạng không thân thiện để chúng ta dễ dàng đọc hiểu, vậy nên:

  • PHP chuyển đổi dấu thời gian thành định dạng có thể đọc được cho con người
  • Và ngược lại, Chuyển ngày từ ký hiệu thân thiện thành dấu thời gian mà máy tính hiểu được.

Cú pháp của hàm date() trong PHP được viết như sau:

date(format, timestamp)

Tham số format của hàm date () là bắt buộc, chỉ định định dạng của ngày và giờ trả về.

Tuy nhiên, timestamp là một tham số tùy chọn, nếu không được truyền vào thì ngày và giờ hiện tại sẽ được sử dụng.

Ví dụ, các khối lệnh sau đây hiển thị ngày hôm nay:

<?php
  $today = date("d/m/Y");
  echo $today;
?>

Lưu ý: Hàm date() của PHP trả về ngày và giờ hiện tại theo đồng hồ tích hợp của máy chủ web nơi chương trình được thực thi. Nếu bạn chạy trên localhost thì nó sẽ lấy định dạng theo máy tính của bạn.

Định dạng Ngày và Giờ với PHP

Tham số format của hàm date() trên thực tế là một chuỗi có thể chứa nhiều ký tự cho phép bạn tạo một chuỗi ngày chứa các thành phần khác nhau của ngày và giờ, như ngày trong tuần, sáng (AM_) hoặc chiều (PM), v.v …

Dưới đây là một số các ký tự định dạng liên quan đến ngày thường được sử dụng:

  • d – Đại diện cho ngày trong tháng: Hai chữ số có số 0 đứng đầu (01 hoặc 31)
  • D – Đại diện cho ngày trong tuần dưới dạng chữ viết tắt (từ Mon đến Sun)
  • m – Biểu thị tháng bằng số có số 0 đứng đầu (01 hoặc 12)
  • M – Đại diện cho tháng bằng văn bản , viết tắt (từ Jan đến Dec)
  • y – Đại diện cho năm bằng hai chữ số (01 hoặc 19)
  • Y – Năm đại diện bằng bốn chữ số (2001 hoặc 2019)

Các phần của thời gian có thể được phân tách bằng cách chèn các ký tự khác, như dấu gạch nối (-), dấu chấm (.), Dấu gạch chéo (/) hoặc dấu cách để thêm định dạng hình bổ sung:

<?php
  echo date("d/m/Y") . "<br>";
  echo date("d-m-Y") . "<br>";
  echo date("d.m.Y");
?>

Lưu ý: Bạn có thể sử dụng hàm date() của PHP để tự động cập nhật thời hạn bản quyền trên trang web của mình, như:

Copyright @ 2002-<?php echo date("Y")?> 

Tương tự, bạn có thể sử dụng các ký tự sau để định dạng chuỗi thời gian:

  • h – Biểu diễn giờ ở định dạng 12 giờ với các số 0 đứng đầu (01 đến 12)
  • H – Biểu thị giờ ở định dạng 24 giờ với các số 0 đứng đầu (00 đến 23) 
  • i – Biểu thị số phút với các số 0 đứng đầu (00 đến 59) 
  • s – Đại diện cho giây với các số 0 đứng đầu (00 đến 59) 
  • a – Đại diện cho chữ thường thời gian trước buổi trưa hoặc sau buổi trưa (am hoặc pm)
  • A – Đại diện cho chữ hoa thời gian trước buổi trưa hoặc sau buổi trưa (AM hoặc PM)
<?php
  echo date("h:i:s") . "<br>";
  echo date("F d, Y h:i:s A") . "<br>";
  echo date("h:i a");
?>

Hàm time() trong PHP

Hàm time() được sử dụng để lấy thời gian hiện tại dưới dạng Unix timestamp (số giây kể từ khi bắt đầu thời kỳ Unix: ngày 1 tháng 1 năm 1970 00:00:00 GMT).

<?php
  // Thử hiển thị thời gian hiện tại: 10:32:47 ngày 15/04/2019 
  $timestamp = time();
  echo($timestamp);
?>

Kết quả nhận được sẽ là:

1555324367

Chúng ta có thể chuyển $timestamp này thành ngày có thể đọc được của con người thông qua việc chuyển nó bằng hàm date() đã được giới thiệu trước đó.

<?php
  $timestamp = 1555324367;
  echo(date("F d, Y h:i:s", $timestamp));
?>
April 15, 2019 10:32:47

Hàm mktime() trong PHP

Hàm mktime() được sử dụng để tạo dấu thời gian dựa trên ngày và giờ cụ thể.

Nếu không có ngày và giờ được cung cấp, dấu thời gian cho ngày và giờ hiện tại sẽ được trả về.

Cú pháp của hàm mktime() có thể được cung cấp với:

mktime(hour, minute, second, month, day, year)

Ví dụ sau hiển thị dấu thời gian tương ứng với 3:20:12 chiều ngày 10 tháng 5 năm 2014:

<?php
// Create the timestamp for a particular date
echo mktime(13, 45, 00, 4, 16, 2019);
?>

Kết quả nhận được là:

1555422300

Lưu ý: Bạn có thể bỏ qua bao nhiêu đối số tùy thích và giá trị tương ứng với thời gian hiện tại sẽ được sử dụng thay thế. Nếu bạn bỏ qua tất cả các đối số, hàm mktime() sẽ trả về dấu thời gian UNIX tương ứng với ngày và giờ hiện tại, giống như time().

Hàm mktime() cũng có thể được sử dụng để tìm tên ngày trong tuần tương ứng với một ngày cụ thể.

Để thực hiện việc này, chỉ cần sử dụng ký tự ‘l’ (chữ thường ‘L’) với dấu thời gian của bạn, như trong ví dụ sau, hiển thị ngày rơi vào ngày 16 tháng 4 năm 2019:

<?php
// Get the weekday name of a particular date
echo date('l', mktime(0, 0, 0, 4, 16, 2019));
?>

Hôm nay là thứ 3, và kết quả sẽ trả về là:

Tuesday

Hàm mktime() cũng có thể được sử dụng để tìm một ngày cụ thể trong tương lai sau một khoảng thời gian cụ thể.

Như trong ví dụ sau, ngày nào sẽ hiển thị ngày rơi sau 30 tháng kể từ ngày hiện tại?

<?php
// Hôm nay là 16 tháng 4 năm 2019
$futureDate = mktime(0, 0, 0, date("m")+30, date("d"), date("Y"));
echo date("d/m/Y", $futureDate);
?>

30 tháng sau kể từ ngày 16 tháng 4 năm 2019 sẽ là:

16/10/2021

Tổng kết

Như vậy là bạn đã biết sử dụng cơ bản các hàm date(), time(), mktime() . Chúng ta sẽ tìm hiểu cụ thể hơn nếu sau này gặp các trường hợp và yêu cầu cụ thể.

Hoặc bạn có thể tìm hiểu thêm về các hàm date, time trong PHP tại đây

Có thể bạn muốn xem

Pesudo Element trong CSS

Sử dụng phần tử giả (Pesudo element) trong CSS là một cách để áp dụng các quy tắc CSS cho phần tử không xác định vị trí trong DOM tree.

Pesudo class trong CSS

Bộ chọn lớp giả CSS (Pesudo class Selector) khớp với các thành phần dựa trên một điều kiện bổ sung và không nhất thiết phải được định nghĩa trong DOM tree.

Leave a reply

Please enter your comment!
Please enter your name here