2009-12-01 47 views
4

采取下面的代码一看:PHP INT最新问题

$t=77; 
date("H:i:s", $t); 

它返回

21:01:17 

正确的结果,当然,应该是这样的0时01分17秒。

$ t值确实是由YouTube GData API,trought($videoEntry->getVideoDuration())返回的数值。

如何解决这个问题?

回答

8

日期是特定于时区的。您需要将其设置为GMT以获得您想要的结果。

date_default_timezone_set('GMT'); 
$t=77; 
echo date("H:i:s", $t); 
+0

确定GMT或UTC正常工作。 thx – 2009-12-01 18:54:50

-1

尝试设置GMT时区。

date_default_timezone_set('Europe/London'); 
+1

伦敦的时间不是格林威治标准时间的一部分时间? – Atli 2009-12-01 18:54:37

+0

设置为欧洲/伦敦返回01:01:17。见下面的解决方案 – 2009-12-01 18:55:33

2

的第二个参数的日期()是一个Unix时间戳 - 换句话说,它是一个数字的自1970年1月1日,秒调整到什么PHP被设置为一个时区(可以与date_default_timezone_set被设置)。

-1

我认为,如果你在第二个值,那么你应该使用mktime函数,那么它会给出正确的结果。例如:

$t=77; 
echo date("H:i:s", mktime(0,0,$t)); 
+1

嘿。 'mktime'函数创建一个时间戳记 - 自从1970-01-01开始的秒数 - 并且只用秒值就可以创建一个时间戳,在当时的特定时间。例如。 '2009-12-01 00:01:17' *(使用GMT)*。其中,如果您只对时间值感兴趣,则不会改变。你发布的内容实际上等于'$ t = 77;回声日期(“H:i:s”,$ t);'。 – Atli 2009-12-01 19:18:26

+0

嗨Atli ...你是对的......谢谢澄清 – 2009-12-02 18:26:27