2013-02-14 109 views

回答

24

您需要使用同一時區的一個健全的比較:

echo strtotime("2011-01-26 13:51:50 GMT"); 
// 1296049910 

var d = Date.parse("2011-01-26 13:51:50 GMT")/1000; 
console.log(d); 
// 1296049910 

更新

根據標準,只有RFC 2822格式的日期是很好的支持:

Date.parse("Wed, 26 Jan 2011 13:51:50 +0000")/1000 

要產生這樣的日期,你可以在PHP中使用gmdate('r')

echo gmdate('r', 1296049910); 
+0

在Mozilla瀏覽器中引用'NaN'。 – Chinmay235 2016-02-03 06:01:40

5

JavaScript使用毫秒作爲時間戳,而PHP使用秒。其結果是,你會得到非常不同的日期,因爲它是關閉的一個因素1000

樣品

echo date('Y-m-d', TIMESTAMP/1000);

評論響應

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 

    function toTimestamp(year,month,day,hour,minute,second) 
    { 
     var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second)); 
     return datum.getTime()/1000; 
    } 

    $(function() 
    { 
     console.log(toTimestamp(2011,01,26,13,51,50)); 

    }); 

</script> 

<?php 

echo $the_date = strtotime("2011-01-26 13:51:50");
+1

這不是唯一的區別:) – 2013-02-14 05:05:14

+0

@jack我知道TIMEZONE也很重要,但我只是給第二個區別,因爲第一個已經給你 – 2013-02-14 05:08:21

+0

thankx dipesh bhai ji ... – 2013-02-14 07:05:28

2

strtotime()Date.parse()產量UNIX時間戳,分別爲秒和毫秒的分辨率。但是,如果輸入字符串中缺少時區信息,則假定爲本地時間。因此即使使用PHP(或JavaScript)在兩臺機器上生成時間戳,輸入字符串2011-01-26T13:51:50也可能在不同的計算機上產生不同的輸出。

解決方案是顯式指定字符串中的時區。這應該會在任何機器上產生相同的結果:

Date.parse("Jan 26, 2011 13:51:50 GMT+0500")/1000; // 1296031910 
strtotime("Jan 26, 2011 13:51:50 GMT+0500");   // 1296031910 
相關問題