2013-10-13 46 views
8

我有这样的字符串:“13/10 15:00”,我想将其转换为时间戳,但是当我这样做:转换这个字符串向timestamp PHP

 $timestamp = strtotime("13/10 15:00"); 

它返回一个空值。

+0

的strtotime是不可能不犯错 - 如果你知道的格式,你应该使用[DateTime :: createFromFormat](http://php.net/manual/en/datetime.createfromformat.php)(可从PHP 5.3.x及更高版本中获得)或类似内容。 (您还需要提供缺失的一年。) –

+0

您的格式不受支持! http://www.php.net/manual/zh/datetime.formats.compound.php – WebNovice

+0

你的字符串不是明确定义的日期或时间 –

回答

34

在你的代码strtotime()试图13/10转换为13个月的第十天,它会返回一个错误。

如果要分析日期字符串自定义格式,最好使用日期时间:: createFromFormat()代替:

$dtime = DateTime::createFromFormat("d/m G:i", "13/10 15:00"); 
$timestamp = $dtime->getTimestamp(); 
+0

'$ timestamp'变量包含DateTime对象,而不是时间戳。要获得时间戳,使用'$ timestamp-> getTimestamp();'或'$ timestamp-> format('U');' –

+0

@Glavić足够真实 - 比'strtotime()'更可靠。谢谢。 – 2013-10-14 08:06:20

+6

链接到文档:http://php.net/manual/en/datetime.createfromformat.php – Doug

14
$timestamp = strtotime("13-10-2013 15:00"); 

这可能是很重要的:在第m

日期/ d/y或DMY格式通过查看 的各种组件之间的分隔符消除歧义:如果分离器是 斜线( /),那么假设美国的m/d/y;而如果 分隔符是破折号( - )或点(。),则假定欧洲的d-m-y格式为 。

为避免潜在的歧义,尽可能使用ISO 8601(YYYY-MM-DD) 日期或DateTime :: createFromFormat()。

http://uk3.php.net/strtotime