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

时间:2014-12-11 06:49:46

标签: php date unix-timestamp date-comparison

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

我认为使用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日),则应提供错误消息,否则应回显成功消息。

感谢。

3 个答案:

答案 0 :(得分:1)

  

我跟踪的变量包含MM-DD-YYYY格式的日期。我想将此日期与今天的日期进行比较。

您无法比较格式为m-d-Y的日期的字符串表示形式。这种格式是无效的格式,php不会理解它。 Read the manual哪些日期格式有效

比较字符串日期的最佳方法是将其格式化为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";

demo

但是我已经在answer of your previous/same question中解释过了(见第2个链接)。

  

我认为使用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";

demo

但我仍然建议您使用DateTime class,就像我已经解释过my previous answer一样。

答案 1 :(得分:-1)

请尝试以下代码

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

答案 2 :(得分:-1)

首先,你必须在时间戳值中转换日期,如

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

然后你可以这样做,将今天的日期与你的日期进行比较。

$diff = $date_time - time();

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