出于某种原因,这给了我一个奇怪的时间:
date_default_timezone_set('Europe/London');
$todaysdate = date('d-m-y h:i:s a', time());
$todaysdatestring = strtotime($todaysdate);
这让我在2018年回归。
e.g。 1515889804
似乎将时间设置为月/年/日。
我无法理解...
有什么想法吗?
答案 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');