我有如下所示的日期字符串:
"2012 28 Nov 21:00 CET"strtotime("2012 28 Nov 21:00 CET")返回false。
有没有办法把这个字符串转换成date对象,或者我需要用不同的格式?
发布于 2012-11-29 05:22:52
2012 28 Nov 21:00 CET是一种奇怪的日期/时间格式。Y-D-M?你从哪里弄来的?
无论如何,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需要一个“英语文本日期时间”(according to the manual),而Y-D-M不是。只要strtotime返回false,它就不能理解您的字符串,而这在本应用程序中是正常的。手册页上有一条关于此问题的说明:
备注:
通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的日期的歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲的d-m-y格式。
为了避免潜在的歧义,最好尽可能使用ISO8601 (YYYY-MM-DD)日期或DateTime::createFromFormat()。
同样,对于任何与日期或时间进行交互的工具,DateTime都是一个很好的工具。
Documentation
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.php发布于 2012-11-29 05:20:47
strtotime不会创建date对象,它只是尝试解析您的输入并返回一个unix时间戳。
你可以在这里找到有效的格式:http://www.php.net/manual/en/datetime.formats.php
echo strtotime("2012-11-28T21:00:00+01:00");将输出1354132800
要创建一个php DateTime对象,你可以这样做:
$date = new DateTime('2012-11-28T21:00:00+01:00');
echo $date->format('Y-m-d H:i:s');https://stackoverflow.com/questions/13614500
复制相似问题