【问题标题】:How can I compare the date with today's date using UNIX timestamp values in PHP?如何使用 PHP 中的 UNIX 时间戳值将日期与今天的日期进行比较?
【发布时间】:2014-12-11 06:49:46
【问题描述】:

我关注的变量包含 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 日),它应该给出错误消息,否则应该回显成功消息。

谢谢。

【问题讨论】:

标签: php date unix-timestamp date-comparison


【解决方案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 中解释过了(见第二个链接)。

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

【讨论】:

    【解决方案2】:

    请尝试以下代码

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

    【讨论】:

      【解决方案3】:

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

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

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

      $diff = $date_time - time();
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多