-1

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

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

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

谢谢。

4

3 回答 3

1

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

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

比较字符串日期的最佳方法是将其格式化Y-m-d或将字符串日期转换为 unix 时间戳整数。但是一旦有了日期Y-m-d格式,将其转换为 unix 时间戳就很简单了,因此将其转换为时间戳只是为了比较是不必要的步骤。

转换m-d-Ym/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

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

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

其他方法可以用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 类,就像我在之前的回答中已经解释过的那样。

于 2014-12-11T09:14:47.353 回答
-1

请尝试以下代码

if(strtotime(date('d-m-Y')) == strtotime($form_data['reg_date'])){
        echo 'Today\'s Date';
}
于 2014-12-11T06:58:50.263 回答
-1

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

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

然后您可以这样做以将今天的日期与您拥有的日期进行比较。

$diff = $date_time - time();

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

于 2014-12-11T07:06:05.377 回答