所以我有iso日期時間,需要從字符串轉換爲日期對象。如何將日期轉換爲本地瀏覽器時區?停止javascript日期功能從更改時區偏移
new Date('2013-07-18T17:00:00-05:00')
Thu Jul 18 2013 18:00:00 GMT-0400 (EDT)
我想
星期四2013年7月18日17:00:00 GMT-0500(XX)
所以我有iso日期時間,需要從字符串轉換爲日期對象。如何將日期轉換爲本地瀏覽器時區?停止javascript日期功能從更改時區偏移
new Date('2013-07-18T17:00:00-05:00')
Thu Jul 18 2013 18:00:00 GMT-0400 (EDT)
我想
星期四2013年7月18日17:00:00 GMT-0500(XX)
懷疑這將有助於:
function goAheadMakeMyDate(s){
var d = new Date(s);
// override Date.toString()
d.toString = function(){ return ''+s; };
return d;
}
var example = goAheadMakeMyDate("Fri 19 July 2013 12:00:00 GMT");
example.toString() // returns string actually used to construct the date
'Fri 19 July 2013 12:00:00 GMT'
example.toLocaleString()
'Fri Jul 19 2013 08:00:00 GMT-0400 (EDT)'
1*example // gives seconds since epoch
1374235200000
隨着你的輸入:
example = goAheadMakeMyDate('2013-07-18T17:00:00-05:00')
{ Thu, 18 Jul 2013 22:00:00 GMT toString: [Function] }
> example.toString()
'2013-07-18T17:00:00-05:00'
> example.toLocaleString() // I live in GMT-4
'Thu Jul 18 2013 18:00:00 GMT-0400 (EDT)'
> 1*example // convert to integer date
1374184800000
但是,如果你開始修改這個日期,toString將會而不是改變並且會咬你。
您可以使用庫如Moment.js來做到這一點。
查看字符串+格式解析。
http://momentjs.com/docs/#/parsing/string-format/
下應該分析你提供你的約會,但你可能需要修改它爲您的需求。
var dateString = "2013-07-18T17:00:00-05:00";
var dateObject = moment(dateString, "YYYY-MM-DDTHH:mm:ssZ").toDate();
另外,看到片刻的字符串分析器,它看起來是在你提供的格式,隨着時間的秒數和時區之間的空間除外。
,因爲它是JavaScript來的工作只有簡單的方法你不能更改JavaScript的這種行爲。會發生什麼簡單的是,Javascript查看時間轉換,計算匹配時間戳,然後詢問OS在本地時區中表示此時間戳。這裏要理解的關鍵是-05:00
不是時區的指示,而僅僅是從UTC開始的轉變。
時區是複雜的野獸,只是任意的政治決定。操作系統提供的服務可以在本地時區顯示時間,但不會在其他時區顯示。要做到這一點,你必須考慮諸如DST之類的東西,這幾乎就是地獄。
與時間管理一樣,處理這個問題的唯一體面的方法是使用專用庫。在Javascript中,你會發現Moment.js和Moment.Timezone.js非常有幫助。
例http://codepen.io/Xowap/pen/XKpKZb?editors=0010
document.write(moment('2013-07-18T17:00:00-05:00').tz('America/New_York').format('LLL'));
作爲獎勵,你會得到一噸格式/從Moment.js解析功能。
另請注意,只要您使用ISO 8601,您的日期可以精確定位到一個精確的時刻,因此可以顯示在您喜歡的任何時區。換句話說,JS「轉換」你的日期並不重要。
ISO格式化日期的點將被轉換回您的時區... – SeinopSys
您不能。 JavaScript'Date'對象不存儲任何時區信息,當輸出/ toStringing /記錄它們時,它們將使用本地瀏覽器時區(不幸的是默認值)或UTC(使用顯式方法)。 – Bergi
但是,如果我想顯示的內容不在瀏覽器時區中。爲什麼不能日期解析字符串,並將日期對象設置爲iso字符串中指定的時區偏移量。 – user2434674