2012-03-09 86 views
0

您知道我们可以使用date()以秒为单位。例如date('H:i:s', 3652)包含时区偏移

date('H:i:s', 1); // it should returns '00:00:01' 
date_default_timezone_set('Europe/Rome'); 
date('H:i:s', 1); // it returns '01:00:01'. 3600s plus! 

我怎样才能解决这个问题: 但如果我设置日期的时区则返回错误的字符串?

回答

0

欧洲/罗马时区是格林威治标准时间+ 1。它将在罗马时间(格林威治标准时间前一小时)返回,所以这是正确的。

+0

是的,但是我想在H:i:s格式中准确地输入秒数;不包括抵消。 – mrdaliri 2012-03-09 18:24:43

+0

你只是想计算几秒钟等于几小时,几分钟和几秒?例如,86401应该返回什么?它应该返回00:00:01还是应该返回24:00:01?如果你的答案是前者,那么你可以使用date(),但将时区设置为UTC。如果你的答案是后者,那么'date()'是不正确的,你需要编写一个函数来完成将秒转换为几小时,几分钟和剩余秒的数学运算。 – Crashspeeder 2012-03-09 18:32:20

0

我找到了解决方案!

date_default_timezone_set('Europe/Rome'); 
$offset = date('Z'); 
date('H:i:s', 1 - $offset); // it returns '00:00:01' now. 

在所有,如Crashspeeder说,秒转换为小时的函数,分钟,秒更好。因为它支持的秒数超过86400.