我在比較PHP中的DateTime對象。將datetime與不同的timezone_type進行比較php
$Time1 = DateTime::createFromFormat('UP', '1409900072+0200');
$Time2 = new DateTime('2014-09-05 07:54:32');
的時間2使用defoult這是歐洲/哥本哈根,比較收益率以下
if ($Time2 > $Time1){
echo "true \n";
} else {
echo "false \n";
}
true
object(DateTime)#1 (3) {
["date"]=>
string(19) "2014-09-05 06:54:32"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+02:00"
}
object(DateTime)#2 (3) {
["date"]=>
string(19) "2014-09-05 07:54:32"
["timezone_type"]=>
int(3)
["timezone"]=>
string(17) "Europe/Copenhagen"
}
我的理解是實際的本地時間時間1是8時54分32秒的方式,因此如何我可以在同一時區獲得比較嗎?
在此先感謝
問題是,無論如何,'1409900072'用'+ 0200'做什麼? UNIX時間戳不需要隨附的時區;那麼它的意義究竟是什麼?另外,'+ 0200'對於大多數用途來說是相當無用的信息;需要通過名稱指定時區纔是真正有用的。 – deceze 2014-09-05 10:25:41
@deceze - 同意,但是這些可以在某些地方找到,比如從較舊的ASP.Net JSON實現中序列化的數據,其值類似'「/ Date(1198908717056-0700)/」'。在特定情況下,該值以毫秒爲單位,偏移量是額外的數據。 ms值不反映偏移量。將其與ISO8601進行比較,其中偏移表示該值已經*已經被偏移調整。難怪PHP在這裏感到困惑。 @Mads - 關於這種輸入格式來自哪裏的一些細節將會很有用。謝謝。 – 2014-09-05 16:34:06
@MattJohnson - 完整的時間戳記如您所示/ Date(1409900072 + 0200)/並且它是來自Dandomain.dk網店系統的輸出。時間是在購物系統中創建訂單的時間。 – 2014-09-06 13:27:11