PHP so sánh dấu thời gian

Có nhiều cách để so sánh hai ngày. Trong phần sau, bạn sẽ tìm thấy 2 phương pháp để so sánh hai ngày

Phương pháp 1. Sử dụng hàm strtotime()

Bằng cách này, chúng tôi sẽ so sánh hai ngày theo hai bước-

  1. Chuyển đổi hai ngày thành dấu thời gian tương ứng của chúng. Dấu thời gian của một ngày, như bạn biết, là số giây kể từ ngày 1 tháng 1 năm 1970 00. 00. 00 UTC
  2. Sau đó, tìm ra ngày lớn hơn so sánh hai dấu thời gian đó

Đoạn mã sau cho biết cách sử dụng hàm strtotime() để so sánh hai ngày-

$timestamp2)? "$date1 is greater than the $date2": "$date2 is greater than the $date1";
}
?>

[wpdm_file id=117]

đầu ra
2014-05-26 lớn hơn 2014-05-17

Làm thế nào nó hoạt động

Dòng 2 -3$date1 chứa ngày đầu tiên và dòng 2 chứa ngày thứ hai. Dòng 4Sử dụng hàm strtotime(), chúng tôi chuyển đổi ngày đầu tiên thành dấu thời gian tương đương của nó. Dòng 5Sử dụng hàm strtotime(), chúng tôi chuyển đổi ngày thứ hai thành dấu thời gian tương đương của nó. Dòng 6-7Trong dòng 6, chúng tôi so sánh xem hai ngày có bằng nhau không. Nếu vậy, thì chúng ta in nó ở dòng 7Dòng 8-11Nếu hai ngày không bằng nhau, thì những dòng này thực thiDòng 9 Toán tử bậc ba kiểm tra xem $timestamp 1(là ngày đầu tiên) có lớn hơn $timestamp2 không. Nếu vậy (thực tế là như vậy), nó sẽ in chuỗi trước dấu hai chấm (. ), nếu không, nó sẽ in chuỗi tiếp theo sau dấu hai chấm

PHP so sánh dấu thời gian

Ngoài yyyy-mm-dd, bạn có thể sử dụng định dạng ngày khác trong hàm strtotime(). Để biết hàm strtotime() hỗ trợ định dạng ngày nào, vui lòng kiểm tra các định dạng ngày và giờ được hỗ trợ

Phương pháp 2. Sử dụng phương thức diff() của lớp DateTime từ SPL

Một trong những lớp mà SPL (Thư viện PHP chuẩn) cung cấp là lớp DateTime và nó có một phương thức có tên là diff() có thể trả về sự khác biệt giữa hai đối tượng ngày tháng. Chúng tôi sẽ áp dụng các bước sau để so sánh hai ngày bằng phương pháp này-

Khớp hai ngày trong PHP khá trơn tru khi cả hai ngày đều có định dạng giống nhau nhưng php không phân tích được khi hai ngày ở định dạng không liên quan. Trong bài viết này, chúng ta sẽ thảo luận về các trường hợp so sánh ngày khác nhau trong PHP. Chúng ta sẽ tìm hiểu cách sử dụng lớp DateTime,strtotime() để so sánh ngày tháng

Trường hợp 1

chúng ta có thể phân tích ngày bằng toán tử so sánh đơn giản nếu các ngày đã cho có định dạng tương tự

 $date2)
     echo "$date1 is latest than $date2";
   else
     echo "$date1 is older than $date2";
?>

đầu ra

2019-03-26 is latest than 2018-11-24

Giải trình

Ở đây chúng tôi đã khai báo hai ngày $date1 và $date2 trong cùng một định dạng. Vì vậy, chúng tôi đã sử dụng toán tử so sánh (>) để so sánh ngày

Trường hợp 2

Nếu các ngày đã cho ở các định dạng khác nhau tại thời điểm đó, chúng ta có thể sử dụng hàm strtotime() để chuyển đổi các ngày đã cho sang định dạng dấu thời gian UNIX và phân tích các dấu thời gian dạng số này để có được kết quả như mong đợi

Thí dụ

 $curtimestamp2)
      echo "$date1 is latest than $date2";
   else
      echo "$date1 is older than $date2";
?>

đầu ra

18-03-22 is latest than 2017-08-24

Giải trình

Trong ví dụ này, chúng tôi có hai Ngày ở định dạng khác nhau. Vì vậy, chúng tôi đã sử dụng hàm strtotime() được xác định trước để chuyển đổi chúng thành dấu thời gian UNIX dạng số, sau đó để so sánh các dấu thời gian đó, chúng tôi sử dụng các toán tử so sánh khác nhau để có được kết quả mong muốn

trường hợp 3

So sánh hai ngày bằng cách tạo đối tượng của lớp DateTime

Thí dụ

 $date2) {
    echo 'datetime1 greater than datetime2';
   }
   if ($date1 < $date2) {
    echo 'datetime1 lesser than datetime2';
   }
  if ($date1 == $date2) {
    echo 'datetime2 is equal than datetime1';
   }
?>

đầu ra

datetime1 lesser than datetime2

Giải trình

Trong ví dụ này, chúng tôi đã tạo hai đối tượng DateTime. Để so sánh hai ngày đó, chúng tôi sử dụng các toán tử so sánh khác nhau để có được kết quả mong muốn

Các giá trị ngày bắt buộc phải được so sánh trong PHP cho các mục đích khác nhau, chẳng hạn như tính toán thời hạn của một tác vụ và lên lịch cho một sự kiện. Việc so sánh hai ngày có định dạng tương tự sẽ dễ dàng hơn. Nếu cần so sánh ngày của các định dạng khác nhau, thì các giá trị ngày sẽ được yêu cầu chuyển đổi thành cùng một định dạng bằng cách sử dụng các hàm PHP tích hợp khác trước khi so sánh. Các cách khác nhau để so sánh giá trị ngày tháng trong PHP đã được trình bày trong hướng dẫn này

So sánh các ngày có định dạng tương tự

Các giá trị ngày được lưu trữ dưới dạng chuỗi trong PHP ở định dạng “yyyy-mm-dd”. Nếu giá trị ngày này không được chỉ định ở định dạng này, thì đầu ra sai sẽ được tạo. Cách so sánh hai ngày có định dạng giống nhau đã được trình bày trong hướng dẫn này

ví dụ 1. So sánh các giá trị ngày tháng bằng cách sử dụng câu lệnh có điều kiện

Tạo một tệp PHP với tập lệnh sau sẽ đọc hai giá trị ngày ở định dạng PHP từ các tham số URL. Sau đó in thông báo sau khi so sánh các giá trị ngày tháng bằng câu lệnh điều kiện và toán tử so sánh



// Kiểm tra xem các giá trị ngày có được chuyển vào tham số URL hay không
if(isset($_GET['D1']) and isset($_GET['D2']))

{

    //Đặt giá trị ngày đầu tiên dưới dạng chuỗi
    $dateVal1 = $_GET['D1'];

    //Đặt giá trị ngày thứ hai dưới dạng chuỗi
    $dateVal2 = $_GET['D2'];

    //Kiểm tra xem các giá trị có rỗng hay không
    if ($dateVal1 . = ""$dateVal2 . = "")
    {

        //So sánh ngày tháng bằng toán tử so sánh
          if ($dateVal1 < $dateVal2)

              echo " $dateVal1 nhỏ hơn $dateVal2.";

        khác

              echo " $dateVal1 lớn hơn $dateVal2.";
    }

    khác
        //In thông báo lỗi
        echo "Một hoặc hai giá trị ngày trống. ";
}
khác
    //In thông báo lỗi
    echo "Thiếu một hoặc nhiều giá trị ngày. ";

?>

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trước đó nếu không có giá trị ngày nào được chuyển dưới dạng tham số URL

PHP so sánh dấu thời gian

Sau khi thực thi tập lệnh trước, đầu ra sau sẽ xuất hiện nếu “2022-09-21 và 2022-01-22” được chuyển vào tham số URL

PHP so sánh dấu thời gian
Sau khi thực thi tập lệnh trước, đầu ra sau sẽ xuất hiện nếu 2022-09-21 và 2022-11-22” được chuyển vào tham số URL

PHP so sánh dấu thời gian

ví dụ 2. So sánh các giá trị ngày bằng cách sử dụng toán tử bậc ba

Tạo một tệp PHP với tập lệnh sau sẽ đọc hai giá trị ngày ở định dạng PHP từ các tham số URL. Sau đó in thông báo sau khi so sánh các giá trị ngày bằng toán tử bậc ba



    //Kiểm tra xem các giá trị ngày có được chuyển vào tham số URL hay không
    if(isset($_GET['D1']) and isset($_GET['D2']))
    {
      //Đặt giá trị ngày đầu tiên dưới dạng chuỗi
        $dateVal1 = $_GET['D1'];

      //Đặt giá trị ngày thứ hai dưới dạng chuỗi
        $dateVal2 = $_GET['D2'];

    //Kiểm tra xem các giá trị có trống hay không
    if ($dateVal1 . = ""$dateVal2 . = "")

        //So sánh các giá trị ngày
        echo $dateVal1 < $dateVal2 ? "$dateVal1 is less than $dateVal2." . " $dateVal1 lớn hơn $dateVal2.";

    khác

        //In thông báo lỗi
        echo "Một hoặc hai giá trị ngày trống. ";

}
khác
    //In thông báo lỗi
    echo "Thiếu một hoặc nhiều giá trị ngày. ";
?>

Sau khi thực thi tập lệnh trước, đầu ra sau sẽ xuất hiện nếu “2022-08-25 và 2022-11-22” được chuyển vào tham số URL

PHP so sánh dấu thời gian

So sánh các đối tượng ngày có định dạng tương tự hoặc khác nhau

Cách so sánh các đối tượng ngày tháng có định dạng giống hoặc khác nhau đã được trình bày trong phần hướng dẫn này

ví dụ 3. So sánh các đối tượng ngày có định dạng tương tự

Tạo tệp PHP với tập lệnh sau để tạo hai đối tượng ngày có định dạng tương tự bằng cách sử dụng lớp DateTime. Tiếp theo, câu lệnh điều kiện được dùng để so sánh ngày tháng



// Gán đối tượng ngày đầu tiên
$dateVal1 = new DateTime ("21 May 2022");

// Gán đối tượng ngày thứ hai
$dateVal2 = mới Ngày giờ ("16 Dec 2022");

// So sánh các giá trị ngày bằng cách sử dụng toán tử so sánh
if($dateVal1 > $dateVal2)

    echo date_format($dateVal1,"d-M-Y"), " is greater than ", date_format($dateVal2,"d-M-Y"),".";

khác

    echo date_format($dateVal1,"d-M-Y"), " is less than ", date_format($dateVal2,"d-M-Y"),".";

?>

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trước đó

PHP so sánh dấu thời gian

Ví dụ 4. So sánh các đối tượng ngày có định dạng khác nhau

Tạo tệp PHP với tập lệnh sau để tạo hai đối tượng ngày có định dạng khác nhau bằng cách sử dụng lớp DateTime. Tiếp theo, câu lệnh điều kiện đã được dùng để so sánh ngày tháng



// Kiểm tra ngày sự kiện đã được đặt hay chưa
if(isset($_GET['ed']))
{
    if($_GET['ed'] != "" )
    {
        //Đọc ngày hiện tại
          $today = new DateTime ();

        //Đọc ngày diễn ra sự kiện từ tham số URL
        $eventDate = new DateTime ($_GET['ed']);

        //Tính toán sự khác biệt giữa các ngày
          $difference = $today->diff($eventDate);

        /*
Một số dương sẽ được trả về
nếu ngày sự kiện lớn hơn ngày hiện tại
*/

          if ($difference->format("%r%a") > 0 )

            echo "Sự kiện sắp diễn ra trong " , . "->days, " days.";

        khác

            echo "Sự kiện được tổ chức trước ", . "->days, " days.";
        }

    khác

        //In thông báo lỗi
        echo "Ngày sự kiện trống. ";

}
khác
    //In thông báo lỗi
    echo "Thiếu ngày sự kiện. ";

?>

Sau khi thực thi tập lệnh trước đó, đầu ra sau sẽ xuất hiện nếu không có giá trị ngày nào được chuyển dưới dạng tham số URL

PHP so sánh dấu thời gian
Sau khi thực thi tập lệnh trước đó, đầu ra sau sẽ xuất hiện nếu “2022-10-15” được chuyển vào tham số URL

PHP so sánh dấu thời gian

Sau khi thực thi tập lệnh trước đó, đầu ra sau sẽ xuất hiện nếu “2022-01-15” được chuyển vào tham số URL

PHP so sánh dấu thời gian

Ví dụ 5. So sánh các đối tượng ngày có định dạng khác nhau bằng cách sử dụng hàm date_create()

Tạo tệp PHP với tập lệnh sau để tạo hai đối tượng ngày có định dạng khác nhau bằng cách sử dụng hàm date_create(). Tiếp theo, câu lệnh điều kiện đã được dùng để so sánh ngày tháng



 

// Gán ngày đầu tiên bằng hàm date_create()
$dateVal1 = date_create("30-10);

// Gán ngày thứ hai bằng hàm date_create()
$dateVal2 = date_create("16 tháng 12 năm 2022);

//So sánh các giá trị ngày có định dạng khác nhau
if($dateVal1 > $dateVal2)

    echo $dateVal1->định dạng("d M Y"), " is greater than ", $dateVal2->format("d M Y"), "." ;

khác

    echo $dateVal1->định dạng("d M Y"), " is less than ", $dateVal2->format("d M Y"), "." ;

?>

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trước đó

PHP so sánh dấu thời gian

So sánh giá trị ngày dựa trên giá trị dấu thời gian

Cách so sánh giá trị ngày dựa trên giá trị dấu thời gian đã được hiển thị trong ví dụ sau

Ví dụ 6. So sánh ngày bằng cách sử dụng hàm strtotime()

Tạo tệp PHP với tập lệnh sau sẽ so sánh hai giá trị ngày bằng cách chuyển đổi ngày thành giá trị dấu thời gian



//Xác định hai giá trị ngày của chuỗi
$dateVal1 = "2022-01-01";
$dateVal2 = "2022-06-30";

//So sánh giá trị dấu thời gian của ngày tháng
if (strtotime($dateVal1) < strtotime($dateVal2))

    echo " $dateVal1 nhỏ hơn $dateVal2.";

khác

    echo " $dateVal1 lớn hơn $dateVal2.";

?>

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trước đó

PHP so sánh dấu thời gian

Phần kết luận

Các cách khác nhau để so sánh hai giá trị ngày có định dạng giống hoặc khác nhau đã được trình bày trong hướng dẫn này. Người dùng PHP có thể làm theo bất kỳ phương pháp nào để so sánh các giá trị ngày dựa trên yêu cầu của họ

Làm cách nào để so sánh hai dấu thời gian?

Khi so sánh hai giá trị DẤU THỜI GIAN VỚI Múi giờ, phép so sánh được thực hiện bằng cách sử dụng biểu diễn UTC của các giá trị . Hai giá trị DẤU THỜI GIAN VỚI Múi giờ được coi là bằng nhau nếu chúng đại diện cho cùng một phiên bản trong UTC, bất kể độ lệch múi giờ được lưu trữ trong các giá trị. Ví dụ: '1999-04-15-08. 00.

Làm cách nào để kiểm tra xem thời gian lớn hơn hay nhỏ hơn một thời gian cụ thể trong PHP?

Để so sánh thời gian đã cho với thời gian hiện tại. if (strtotime($given_time) >= time()+300) echo "Bạn đang trực tuyến"; .

Làm cách nào để kiểm tra xem một ngày có lớn hơn ngày khác trong PHP không?

php $date_now = time(); . if ($date_now > $date_convert) { echo 'greater than'; } else { echo 'Less than'; } ?> Save this answer.

Làm cách nào để so sánh hai ngày trong PHP MySQL?

chúng ta có thể phân tích ngày bằng toán tử so sánh đơn giản nếu ngày đã cho có định dạng tương tự. ? php $date1 = "24-11-2018";