php中strtotime()函数的日期字符串格式

时间:2015-01-11 10:14:37

标签: php

我有一个以下字符串:

$time = "01/01/2015"; // format is m/d/Y

我想使用strtotime()函数将其转换为整数值,以便我可以将它与另一个日期进行比较。这是我将其转换为字符串后得到的整数值:

strtotime($time); // Gives me => int(1420092000)

我的问题:

查看上面的时间字符串格式,strtotime()函数如何知道字符串的格式是“m / d / Y”还是“d / m / y”?如果可能的话,我是否必须将strtotime()函数中的格式指定为第二个参数?

2 个答案:

答案 0 :(得分:4)

正如strtotime的php.net手册所说:

注意:

  

通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。   为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。

所以,如果你使用斜杠分隔,它将假设月/日/年,如果你使用破折号或点,php将假设日 - 月 - 年。

http://php.net/manual/en/function.strtotime.php

答案 1 :(得分:0)

您不必指定strtotime()的格式,而是使用/.-指定格式。

作为手册的引用:

  

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

但是如果你想看到这个函数的实现,可以在php github源代码中搜索它:https://github.com/php/php-src

以下是strtotime()的实施:https://github.com/php/php-src/blob/master/ext/date/php_date.c#L1442