2014-08-27 26 views
1

返回false知道爲什麼這的strtotime沒有一個有效的時間戳

strtotime('1356532858') //Wed, 26 Dec 2012 14:40:58 GMT 

回報28043243813

strtotime('1356055871') //Fri, 21 Dec 2012 02:11:11 GMT 

回報false

我正在尋找一種解決方案,可以將任何常見日期字符串轉換爲有效的時間戳。不幸的是,還包括一些(有效)時間戳

+1

可能是因爲多數民衆贊成在[世界結束](http://www.timeanddate.com/calendar/maya-world -end.html)(如果你錯過了)。 – 2014-08-27 15:26:50

+0

哈哈,好一個:)但是因爲我還在這裏,所以我猜這是不同的東西 – Xaver 2014-08-27 15:28:27

+0

如果你有一個UNIX時間戳,你不需要在它上面使用'strtotime'! – deceze 2014-08-27 15:42:45

回答

1

也許你可以嘗試使用strtotime只有當字符串不是10位?

$str = '1356055871'; 
$timestamp = (preg_match('/\d{10}/',$str,$match))?(int)$str:strtotime($str); 
echo $timestamp; 

關於這個問題,爲什麼您會收到在第一次執行的值,並在第二個false,這是因爲1356532858被解釋爲一些有效的日期,雖然是你期待不是:

echo date("Y-m-d H:i:s",strtotime('1356532858')); 
// outputs: 2858-08-27 13:56:53 

strtotime可以接受你的時間戳,但應該有一個領先的@

echo date("Y-m-d H:i:s",strtotime('@1356532858')); 
// outputs: 2012-12-26 15:40:58 
+0

一個可能約1970年1月,所以這不是一個選項 – Xaver 2014-08-27 15:24:32

+0

好吧,明白了。但'5871-08-27 13:56:05'不是一個有效的日期? – Xaver 2014-08-27 15:32:01

+0

似乎'2039年1月19日星期二03:14:07 UTC'是門限日期(http://en.wikipedia.org/wiki/Year_2038_problem) – Xaver 2014-08-27 15:34:22

1

puttin試用g在時間戳前面加上'@'。這將指示strtotime這是UNIX格式的時間戳:

var_dump(strtotime('@1356055871')); 

Source