【发布时间】:2009-04-17 22:04:49
【问题描述】:
我真的很喜欢 PHP 函数 strtotime(),但是 user manual 没有给出支持的日期格式的完整描述。它只给出了几个例子,例如“2000 年 9 月 10 日”、“+1 周 2 天 4 小时 2 秒”和“下周四”。
在哪里可以找到完整的说明?
【问题讨论】:
我真的很喜欢 PHP 函数 strtotime(),但是 user manual 没有给出支持的日期格式的完整描述。它只给出了几个例子,例如“2000 年 9 月 10 日”、“+1 周 2 天 4 小时 2 秒”和“下周四”。
在哪里可以找到完整的说明?
【问题讨论】:
我找不到任何官方信息,但我看到 a tutorial 上面写着 strtotime() 使用 GNU 日期输入格式。这些都在详细描述in the GNU manual。
我注意到的一个差异是“下一个”与 GNU 手册中描述的行为。使用 strtotime(),"next Thursday" 将得到与 "Thursday" 相同的结果,除非今天是星期四。
如果今天是星期四,那么
如果今天不是星期四,那么
我使用的是 PHP 5.2.6。
更新:
我想自从我发布这个用户手册以来已经更新了,否则我是盲目的。它现在包含一个指向Date and Time Formats chapter 的链接,其中包括一个关于relative formats 的部分。
【讨论】:
您可以通过查看以下 C 代码开始跟踪它在做什么:
http://cvs.php.net/viewvc.cgi/php-src/ext/date/php_date.c
搜索 PHP_FUNCTION(strtotime)
这也是主要的正则表达式解析:
http://cvs.php.net/viewvc.cgi/php-src/ext/date/lib/parse_date.re
祝你好运
根据我的经验,strtotime() 可以接受任何看起来像约会的东西。找出它的界限的最好方法是创建一个测试脚本并插入值,然后看看什么有效,什么无效。
$input = "Apr 10th";
print(date('Y-m-d', strtotime($input)));
只需不断更改 $input 变量并观察结果。
【讨论】:
基本上任何date 可以创建strtotime 的东西都会被解析。除了一个例外,它确实存在非美式格式的问题。因此,请保留月-日-年类型格式。
【讨论】: