我想要使用此功能在格式1899-12-30 19:00:00.000
給出的字符串轉換爲日期:PHP - 轉換字符串到日期
$startDate = strtotime("1899-12-30 19:00:00.000");
但作爲一個結果,我得到一個錯誤的日期,例如
30.10.2008 00:00:00
我做錯了什麼?
我想要使用此功能在格式1899-12-30 19:00:00.000
給出的字符串轉換爲日期:PHP - 轉換字符串到日期
$startDate = strtotime("1899-12-30 19:00:00.000");
但作爲一個結果,我得到一個錯誤的日期,例如
30.10.2008 00:00:00
我做錯了什麼?
使用DateTime
:
$date = DateTime::createFromFormat('Y-m-d H:i:s.u', '1899-12-30 19:00:00.000', new DateTimeZone('America/New_York'));
echo $date->getTimestamp() . ' ' . $date->format('Y-m-d H:i:s');
注意,這將是一個負值,因爲它1月1日,1970年上面的代碼outputs之前是:
-2209093200 1899-12-30 19:00:00
請務必設置正確的時區構造函數爲DateTimeZone
(或者您可以忽略它作爲默認值)。
如果正在使用PHP 5> = 5.3.0可以使用date_parse_from_format
Docs函數是這樣的:
$date = "1899-12-30 19:00:00.000";
$dateObj = date_parse_from_format("Y-m-d H:i:s.000",$date);
來源:php.net
我不相信你的格式字符串是正確的 - 它[不會返回正確的結果](http://viper-7.com/xYsS2L)在我的測試中。 – nickb 2012-07-23 13:45:39
是的謝謝。我糾正了它。 – 2012-07-23 13:49:35
日期1899-12-30 19:00:00.000
由UNIX時間戳-2209096800
,這是表示就在32位有符號整數的範圍之外。在一個64位的PHP系統上它可以工作,在32位系統上你會遇到問題。
使用DateTime
類來表示這樣的日期,它可以處理它。
什麼是$數組?應該['i''是'[$ i]'? – andrewsi 2012-07-23 13:30:25
更新了我的問題:-) – Oleg 2012-07-23 13:34:15
這是偶然的,可以處理這些古代功能的範圍之外。爲什麼1899? – Esailija 2012-07-23 13:34:19