2010-02-13 135 views
0

我無法解釋這一點。我有以下幾點:怪異行爲計算時區差異

 $time += $res['timezone']; (The array equates to -5*3600 (EST)) 
    return gmstrftime('%c',$time); 

當我回聲$ res ['timezone'],我得到「-5 * 3600」這是正確的。當我將數組值放在時間變量的前面時,我得到的時間不正確。如果我註釋掉數組值並將其替換爲-5 * 3600,我會得到正確的結果。爲什麼??

+1

你得到的數組變量有什麼結果?只是說這是錯誤的並不意味着太多,如果我們不知道實際存在的是什麼,你能提供一個例子嗎? – animuson

+0

你可以在什麼時候添加嗎?如果你迴應你從這兩種方法得到的紀元時間戳,也會很有幫助。 – Anthony

+0

感謝您的評論。我想我只需要計算不同時區的數學,然後存儲結果。 – Jim

回答

1

因爲字符串「-5 * 3600」和表達式-5 * 3600不是一回事。你可以嘗試把eval圍繞陣列值,就像這樣:

$time += eval($res['timezone']); //(The array equates to -5*3600 (EST)) 
return gmstrftime('%c',$time); 

請注意,這是一個非常糟糕的主意,因爲它是既緩慢和不安全。如果你想在數組中存儲-5 * 3600,那麼計算該值並將結果存儲在數組中:

$res['timezone'] = -5*3600; 
+0

打敗我吧! (只是踢,做一個var_dump的值看@結果。) –

+0

謝謝馬呂斯。你是對的。 brb與結果 – Jim

+0

一個var_dump給我:-5 * 3600 – Jim