Javascript .getHours()返回奇怪的结果

I'm converting a PHP timestamp into a human readable form in javascript:

<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>

The minutes and seconds work but I'm getting strange results for the hours. For example:

Timestamp: 1976

Function returns: 19:32:56

Any ideas why I'm getting "19" from .getHours() ?

I'm going to hazard a guess that you're in Eastern Time. What you are seeing is $lefttime seconds after the epoch, which in the case of EST is 7PM.

XKCD

To fix it, just use basic math:

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