2010-02-13 83 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