我有这样的日期字符串:
"2012 28 Nov 21:00 CET"
strtotime("2012 28 Nov 21:00 CET")
返回false。
有没有办法将这个字符串转换为日期对象,或者我需要以不同的格式进行格式化?
我有这样的日期字符串:
"2012 28 Nov 21:00 CET"
strtotime("2012 28 Nov 21:00 CET")
返回false。
有没有办法将这个字符串转换为日期对象,或者我需要以不同的格式进行格式化?
2012年11月28日21:00中欧时间
这个日期/时间格式有些奇怪。它是按照年-月-日的顺序吗?你是从哪里得到它的?
无论如何,DateTime对象有一个createFromFormat
方法可以更好地解析它:
$dt = DateTime::createFromFormat("Y d M H:i T", '2012 28 Nov 21:00 CET');
$ts = $dt->getTimestamp();
echo $ts; // 1354132800
在这里尝试:http://codepad.viper-7.com/NfAmcw
strtotime
期望一个“英文文本日期时间”(根据手册),而Y-D-M不是。任何时候strtotime
返回false,它只是不理解你的字符串,在这个应用程序中是预期的。手册页面上的一条注释处理了这个问题:
注意:
使用m/d/y或d-m-y格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y格式;而如果分隔符是破折号(-)或点(.),则假定为欧洲的d-m-y格式。
为避免潜在的歧义,最好使用ISO 8601 (YYYY-MM-DD)日期或DateTime :: createFromFormat()。
很好,DateTime
是与日期或时间交互的优秀工具。
文档
DateTime
类 - http://www.php.net/manual/en/class.datetime.phpDateTime :: createFromFormat
- http://www.php.net/manual/en/datetime.createfromformat.phpstrtotime
- http://php.net/manual/en/function.strtotime.phpdate
(还列出日期格式字符串) - http://php.net/manual/en/function.date.phpstrtotime 并不创建日期对象,它只是尝试解析您的输入并返回一个 Unix 时间戳。
您可以在这里找到有效格式:http://www.php.net/manual/zh/datetime.formats.php
echo strtotime("2012-11-28T21:00:00+01:00");
将输出 1354132800
要创建一个PHPDateTime对象,您可以这样做:
$date = new DateTime('2012-11-28T21:00:00+01:00');
echo $date->format('Y-m-d H:i:s');
date_parse_from_format
。 - gen_Eric