4

我有两个包含日期字符串的变量,格式为

$four_days_have_passed = "07-14-2013";
$now = "07-10-2013";

我已经检查了 FirePHP 中的输出并且日期是正确的。

然后我试着像这样比较它们,

if (strtotime($now) < strtotime($four_days_have_passed))
{
  Do Stuff
}

为什么 IF 语句中的代码从不执行?

4

5 回答 5

6

如果要使用 MM/DD/YYYY 格式,则需要/分隔符。

$four_days_have_passed = "07/14/2013";
$now = "07/10/2013";

从手册: -

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

于 2013-07-09T23:26:31.277 回答
2

我看到您接受了答案,但只是为了确保您理解。解析日期有两种情况。

  1. 美国 - 月/日/年
  2. 欧洲 - day.month.year 或 day-month-year

您有错误,因为您提供了欧洲格式 "07-14-2013"并且一年中没有 14 个月。

适合您的格式是以下之一:

  • 14-07-2013- 欧洲
  • 14.07.2013- 欧洲
  • 07/14/2013- 美国人

Morover,要比较数据时间,最好使用面向对象的解决方案和 DataTime 对象。你可以在这里阅读更多

于 2013-07-11T13:03:45.790 回答
2

格式(当这样使用时)是 DD-MM-YYYY。没有第 14 个月。

于 2013-07-09T23:20:08.430 回答
0

在欧洲,特别是在法国, 我们也使用这种带有斜线分隔符的格式:

day/month/year

法国日期示例:26/08/2019

于 2019-08-26T07:51:44.760 回答
0

函数的情况strtotime()是使用 as 格式处理的最简单的方法yyyy-mm-dd。这是 db 日期中的正常格式。如果您使用此格式,则有助于轻松比较两个日期。

于 2017-09-06T09:40:33.133 回答