除了strtotime()函数外,PHP是否有date()函数的反函数?

12
有没有一种函数可以使用date()格式来解释一个字符串?
echo date('s-i-H d:m:Y', 1304591364); // 34-29-17 05:05:2011

// Does this function exist?
echo inverse_date('s-i-H d:m:Y', '34-29-17 05:05:2011'); // 1304591364

我知道strtotime()函数,但它在大多数情况下都不能正确解析非英文日期格式。

我正在寻找一种可以规定日期格式的函数。

7个回答

13

2
只能在 PHP 5.3 中使用,很遗憾。 - cam8001
备选语法:$date = \DateTime::createFromFormat($format, $var) - Alsciende

9
您通常可以使用 strtotime 来实现这一功能:
echo strtotime('2011-05-05 17:29:34');

从手册中得知:

strtotime — 将任何英文文本日期时间描述解析为Unix时间戳

请查看有效的日期和时间格式,以确保您传递的字符串将被正确解析。


抱歉,我忘了提到我使用了 strtotime 函数,但由于我不在美国,我需要控制日期格式。 - Moak

4

PHP 5.4+ 将输出 1359674625

echo date_create_from_format('j/n/Y G:i:s','1/2/2013 1:23:45')->getTimestamp();

这是实际正确的方法,即使用DateTime对象。 - efx

1

函数mktime似乎可以实现您想要的功能。

请查看php.net上的帮助文档:

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

编辑:确实,strtotime可能更方便,我不知道那个函数,很高兴学到了。


1

0
尝试使用以下代码进行反转: $x = '2013-09-15'; $x = implode('-',array_reverse(explode('-',$x)));
//现在$x ='15-09-2013'

1
不错,但是我并不是想要颠倒顺序 :) - Moak

0

是的,你可以使用:

echo strtotime("2011-05-05 17:29:34");

请参见编辑,我正在寻找能够指定格式的函数。 - Moak
你可以使用正则表达式来验证日期的格式,类似于这样的 /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/。 - Headshota

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接