2012-07-25 136 views
0

我轉換PHP時間戳爲人類可讀的形式在javascript:的Javascript .getHours()返回奇怪的結果

<script type="text/javascript"> 

    var timeleft = new Date(<?php echo $lefttime; ?> * 1000); 

    var hours = timeleft.getHours(); 
    var minutes = timeleft.getMinutes(); 
    var seconds = timeleft.getSeconds(); 

    var countdown = function() { 

    console.log("You have " + hours + ":" + minutes + ":" + seconds + " seconds left"); 

</script> 

分秒工作,但我得到的小時奇怪的結果。例如:

時間戳:1976年

函數返回:19點32分56秒

任何想法,爲什麼我從.getHours()獲得 「19」?

+0

19反對什麼? – SLaks 2012-07-25 21:11:18

+0

您誤解了Date對象的工作方式。自從時代以來,它需要ms,你正在傳遞1976年。你根本不需要使用Date。日期對象不代表持續時間。 – Esailija 2012-07-25 21:12:15

+0

@SLaks好吧,零。 1976秒等於32米,56秒,19小時顯然是無處不在。我已經回答了它爲什麼會發生。 – 2012-07-25 21:12:37

回答

5

我會冒險猜測你是在東部時間。你看到的是在時代後的$lefttime秒,在EST的情況下是7PM。

XKCD

要解決它,只需使用基本的數學:

var timeleft = <?php echo $lefttime; ?>; 
var hours = Math.floor(timeleft/3600); 
var minutes = Math.floor(timeleft/60)%60; 
var seconds = timeleft%60;