2013-07-04 94 views
2

我想在我的網頁上使用此JavaScriptcode顯示UTC日期。如何將日期更新爲UTC的當前日期-8

<script> 
    function myDate() 
    { 
    var now = new Date(); 
    var d = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()); 
    var x = document.getElementById("demo"); 
    x.innerHTML=d; 
    } 
</script> 

有了這個代碼,我得到UTC日期顯示爲本地字符串如下:「星期四2013年7月4日00:00:00 GMT + 0530(印度標準時間)」

我不想顯示與本地時間偏移量(格林尼治標準時間+ 0530(IST))的字符串,而不是我希望時間顯示爲UTC字符串格式

+3

這種解決方案? http://stackoverflow.com/questions/10087819/convert-date-to-another-timezone-in-javascript –

回答

1

首先,問題是您正在通過傳入UTC實例化本地Date對象年,月和日。然後使用提供的值創建本地日期。通過這樣做,您可能會根據您希望它是UTC還是本地來創建不正確的日期。在你的情況下,如果你想var now作爲UTC,你當前實例化的方式與本地時間不一樣。

無論如何,紅棗能在JavaScript中非常棘手,所以我會考慮使用Moment.js

它提供所有的功能,用於處理和轉換的JavaScript一個夢幻般的庫日期,你可以在任何時候需要。

例如與時刻,你只需做到以下幾點:

var now = moment(); // current date and time in local format 
var nowAsUTC = now.utc(); // current local date and time converted to UTC 
var alsoNowAsUTC = moment.utc() // same as the line above, but staring in UTC 
console.log(nowUTC.format("DD/MM/YYYY, hh:mm:ss"))// prints a pretty UTC string 
+0

感謝您的幫助!但我仍然收到「Thu Jul 04 2013 03:22:20 GMT + 0000」,但我只想顯示UTC - 8日期,例如「Thu Jul 04 2013」​​no time and GMT things etc. – Sukhpreet

+0

如果您要使用時刻和我的示例,您需要將格式字符串更改爲:'nowUTC.format(「ddd MMM DD YYYY」)'或'now.format (「ddd MMM DD YYYY」) – dcarson

2

通過不同的瀏覽器返回的日期是不同的格式

刪除GMT從日期OFFSET可以使用替代

var d = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()); 
d = d.toString().replace(/GMT.+/,""); 
0

嗯。你確定要顯示UTC-8嗎?我會猜測你確實想把時間轉換成美國太平洋時區。那不是UTC-8總是。有時候是UTC-8,有時候是UTC-7。

如果您實際上不在美國太平洋時區,在JavaScript中可靠地執行此操作的唯一方法是使用實​​現TZDB數據庫的庫。 I list several of them here

例如,使用walltime-js庫,你可以做到以下幾點:

var date = new Date(); 
var pacific = WallTime.UTCToWallTime(date, "America/Los_Angeles"); 
var s = pacific.toDateString() + ' ' + pacific.toFormattedTime(); 

// output: "Fri Apr 26 2013 5:44 PM" 

你不能僅僅加上或減去一個固定的數,因爲目標時區可以使用取決於不同的偏移到底是什麼你正在談論的日期。這主要是由於夏令時,但也因爲時區隨時間而改變。

相關問題