Unix时间戳格式化

时间:2014-01-18 00:31:36

标签: php time unix-timestamp

出于某种原因,这给了我一个奇怪的时间:

date_default_timezone_set('Europe/London');
$todaysdate = date('d-m-y h:i:s a', time());
$todaysdatestring = strtotime($todaysdate);

这让我在2018年回归。

e.g。 1515889804

似乎将时间设置为月/年/日。

我无法理解...

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我不知道你想在这里实现什么,但如果你将d-m-y h:i:s a改为d-m-Y h:i:s a,它会给你正确的日期。

date_default_timezone_set('Europe/London');
$todaysdate = date('d-m-Y h:i:s a', time());
$todaysdatestring = strtotime($todaysdate);

但如果您想获取当前时间戳,为什么不简单地使用time()

答案 1 :(得分:0)

date_default_timezone_set('Europe/London');
$todaysdate = date('m/d/y h:i:s a', time());
$todaysdatestring = strtotime($todaysdate);

var_dump(time(), $todaysdate, strtotime($todaysdate));

我将“d-m-y”改为“m / d / y”。

我不知道时间和日期格式的确切术语和ISO标准 在Eclipse中,它说strtotime想要一个“英文日期格式”。

PHP Version 5.3.28

答案 2 :(得分:0)

strtotime()函数解析您的日期时间字符串18-01-14 01:00:44 am时,它假定数字18是年,01月和14天(格式Y-m-d);这就是为什么你得到2018年的unix时间戳的原因。请参阅here函数strtotime()理解的日期格式。

要检查strtotime()函数如何解析日期时间,请参阅date_parse()函数,例如:print_r(date_parse($todaysdate)); demo

如果您希望将未知格式转换为时间戳,请使用DateTime::createFromFormat()

$dt = DateTime::createFromFormat('d-m-y h:i:s a', '18-01-14 01:00:44 am');
echo $dt->getTimestamp(); # or $dt->format('U');

demo