2014-01-18 193 views
0

由於某種原因,這是給我一個奇怪的時間:Unix的時間戳格式

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

這是我回國時在2018年

例如1515889804

它似乎將時間設置爲月/年/日。

我不能理解...

任何想法?

回答

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()

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想要一個「英文Dateformat」。

PHP版本28年3月5日

+0

PHP手冊總結是有點誤導。如果分隔符是斜槓,則strtotime採用美式格式,如果分隔符是破折號或點,則strtotime採用歐洲格式。英文使用斜槓和歐洲格式。 – dsas

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