如何使用 PHP 中的 UNIX 时间戳值将日期与今天的日期进行比较


How can I compare the date with today's date using UNIX timestamp values in PHP?

我有以下变量,其中包含 MM-DD-YYYY 格式的日期。我想将此日期与今天的日期进行比较。如果变量中包含的日期大于今天的日期,我想回显"错误",如果它小于或等于今天的日期,我想回显"成功"。对于这件事,我不想使用日期时间类

我认为使用 UNIX 时间戳值可能是一个更好的选择。如果您有任何其他更好和有效的选择,欢迎您。

以下是包含日期的变量MM-D-YYYY format

$form_data['reg_date'] = '12-11-2014'; //This is today's date i.e. 11th December 2014

如果变量$form_data['reg_date']包含大于今天日期(即 2014 年 12 月 11 日(的日期,则应给出错误消息,否则应回显成功消息。

谢谢。

我有以下变量,其中包含 MM-DD-YYYY 格式的日期。我想将此日期与今天的日期进行比较。

不能以格式比较日期的字符串表示形式 m-d-Y 。这种格式是无效的格式,php不会理解它。阅读手册,哪些日期格式有效

比较字符串日期的最佳方法是将其格式设置为Y-m-d或将字符串日期转换为 unix 时间戳整数。但是一旦你有Y-m-d格式的日期,将其转换为 unix 时间戳是微不足道的,因此将其转换为时间戳只是为了比较是一个不必要的步骤。

m-d-Y转换为m/d/Y格式,然后转换为 unix 时间戳:

$date = '12-25-2014';
$date = str_replace('-', '/', $date);
var_dump($date);
var_dump(strtotime($date));
if (strtotime($date) > strtotime('today')) echo "ERROR";
else echo "SUCCESS";

演示

但是我已经在回答您之前/相同的问题时对此进行了解释(请参阅第二个链接(。

我认为使用 UNIX 时间戳值可能是一个更好的选择。如果您有任何其他更好和有效的选择,欢迎您。

其他方法可能是使用sscanf()功能转换格式:

$date = '12-25-2014';
sscanf($date, "%d-%d-%d", $m, $d, $Y);
$date = "$Y-$m-$d";
var_dump($date);
if ($date > date('Y-m-d')) echo "ERROR";
else echo "SUCCESS";

演示

但我仍然建议您使用DateTime类,就像我已经解释过我之前的答案一样。

请尝试以下代码

if(strtotime(date('d-m-Y')) == strtotime($form_data['reg_date'])){
        echo 'Today''s Date';
}

首先,您必须将日期转换为时间戳值,例如

$date_time = strtotime("11-12-2014");

然后,您可以执行此操作以将今天的日期与您拥有的日期进行比较。

$diff = $date_time - time();

这将为您提供以秒为单位的日期差异。