迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

在 PHP 中比较日期的不同方法

作者:迹忆客 最近更新:2023/03/10 浏览次数:

本文将教你如何使用 5 种不同的技术在 PHP 中比较日期。在这些技术中,有 4 种将以一种或另一种形式使用内置的 PHP 函数,如 strtotime()time()date()。最后一种技术将使用 PHP DateTime 对象。

strtotime()time() 比较日期

strtotime() 是 PHP 中内置的时间函数。它的主要用途是将一串人类可读的日期转换为相等的 UNIX 时间戳。它可以解析各种字符串并将它们转换为适当的时间戳。此类字符串的示例是 2 weeks agonext week

PHP time() 函数返回当前时间。这个时间是自 UNIX 纪元以来的秒数。如果你需要将这些秒数转换为当前日期,则需要 PHP 的内置 date() 函数。

结合这两个功能时,你可以使用以下步骤比较日期。

首先,你向 strtotime() 提供一个日期字符串。它将把它转换成它的 UNIX 时间戳。

使用 time() 函数从当前时间中减去此 UNIX 时间戳。

你可以使用此计算的结果和条件检查来比较日期。

<?php
  $dateString = '2021-12-12 21:00:00';

  // This will check if the time
  // is in the last day
  if ((time() - (60 * 60 * 24)) < strtotime($dateString)) {
      echo "Date in the last 24hrs";
  } else {
      echo "Date is <b>NOT</b> in the last 24hrs";
  }
?>

输出:

Date is <b>NOT</b> in the last 24hrs

使用 Date() 函数和条件检查比较日期

PHP 的 date() 函数允许你将时间戳格式化为你想要的格式。有问题的时间戳是当前时间和 UNIX 纪元之间的秒数。UNIX 纪元是从 1970 年 1 月 1 日午夜开始的时间。

date() 函数的值取决于你的 php.ini 文件中设置的时区。

如果要使用 date() 函数比较给定日期,请执行以下操作。

<?php
  $todaysDate = date("Y-m-d H:i:s");
  $dateString = "2021-10-12 10:00:00";
  
  if ($dateString < $todaysDate) {
      echo "The date you supplied is LESS than the current date";
  } else {
      echo "The date you supplied is NOT LESS than the current date";
  }
?>

输出:

The date you supplied is LESS than the current date

使用自定义函数比较日期

你使用函数来避免代码重复。本教程中的第一个示例展示了如何将日期与 strtotime()time() 进行比较。

在这种情况下,你将创建一个函数。此函数将接受日期字符串作为参数,然后将其传递给 strtotime()。你将字符串 "today" 传递给函数内的另一个 strtotime()

现在,你有两件事可以比较,它们是,

你可以使用严格比较来将日期与这些标准进行比较。你可以创建一个比较函数来检查以下内容。

以下将检查提供的日期字符串是否为当前日期:

<?php
  function checkToday($time) {
      $convertToUNIXtime = strtotime($time);
      $todayUNIXtime = strtotime('today');
  
      return $convertToUNIXtime === $todayUNIXtime;
  }
  
  if (checkToday('2021-12-13')) {
      echo "Yeah it's today";
  } else {
      echo "No, it's not today";
  }
?>

输出:

No, it's not today

检查过去的日期。

<?php
  function checkThePast($time) {
      $convertToUNIXtime = strtotime($time);
  
      return $convertToUNIXtime < time();
  }
  
  if (checkThePast('2021-12-13 22:00:00')) {
      echo "The date is in the past";
  } else {
      echo "No, it's not in the past";
  }
?>

输出:

The date is in the past

你可以通过以下方式检查未来的日期。

<?php
  function checkTheFuture($time) {
      $convertToUNIXtime = strtotime($time);
  
      return $convertToUNIXtime > time();
  }
  
  if (checkTheFuture('2021-12-13 22:00:00')) {
      echo "The date is in the future";
  } else {
      echo "No, it's not in the future";
  }
?>

输出:

No, it's not in the future

使用 PHP Datetime 对象比较日期

PHP DateTime 类为我们提供了一种面向对象的方式来处理 PHP 中的日期字符串。它有一套你可以使用的方法。它封装了场景背后的一些逻辑,并为你提供了一个干净的界面来使用。

strtotime()date() 相比,DateTime 具有以下优点:

当你打算将日期与 DateTime 进行比较时,请执行以下操作。

<?php
  $firstDate = new DateTime("2020-12-13");
  $secondDate = new DateTime("2021-12-13");
  
  // Compare the date using operators
  if ($firstDate > $secondDate) {
      echo "First date is GREATER than the second date";
  } else if ($firstDate < $secondDate) {
      echo "First date is LESS than the second date";
  } else {
      echo "First and second dates are EQUAL";
  }
?>

输出:

First date is LESS than the second date

Arsort()strtotime() 进行多个日期的比较

如果要比较多个日期字符串,可以将它们存储在数组中。

使用数组中的日期,你可以使用合适的循环方法来处理数组。例如,foreach

foreach 内的循环中,你可以使用 strtotime() 将每个日期转换为它们的 UNIX 时间戳。之后,你可以使用 arsort() 对日期进行排序。

<?php
  // Store the dates
  $dateArray = ["2020-09-30", "2021-12-13", "2021-08-05"];
  
  // Convert each date to a UNIX timestamp
  // and store them in another array
  $dateArrayTimestamp = [];
  foreach ($dateArray as $date) {
      $dateArrayTimestamp[] = strtotime($date);
  }
  
  // Sort the dates,
  arsort($dateArrayTimestamp);
  
  // Print the date starting with the
  // current date
  foreach ($dateArrayTimestamp as $key => $value) {
      echo "$key - " . date("Y - m - d", $value) . "<br>";
  }
?>

输出:

1 - 2021 - 12 - 13<br>2 - 2021 - 08 - 05<br>0 - 2020 - 09 - 30<br>

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便