簡體   English   中英

UTC日期轉換為本地時區

[英]UTC date convert to local timezone

我有UTC格式的日期。

"2016-10-12 05:03:51"

我做了一個函數,將UTC日期轉換為我的本地時間。

function FormatDate(date)
{   
    var arr = date.split(/[- :T]/), // from your example var date = "2012-11-14T06:57:36+0000";
    date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], 00);

    var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);

    var offset = date.getTimezoneOffset() / 60;

    var hours = date.getHours();

    newDate.setHours(hours - offset);

    return newDate;
}

我的當地時區是格林尼治標准時間+0530。

我的代碼產生了以下輸出:

Tue Oct 11 2016 10:33:00 GMT+0530 (IST)

我使用在線工具轉換了日期,以獲取正確的日期和時間。

Wednesday, October 12, 2016 10:30 AM

我的代碼按時匹配在線工具,但不匹配日期。

我該如何更正我的代碼輸出,最好是使用moment.js

UTC是標准而非格式。 我假設您的意思是您的字符串使用零偏移,即“ 2016-10-12 05:03:51”為“ 2016-10-12 05:03:51 + 0000”

解析字符串時,您處在正確的軌道上,但是在創建日期時,可以使用UTC方法阻止主機調整系統偏移的值。

 function parseDateUTC(s){ var arr = s.split(/\\D/); return new Date(Date.UTC(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5])); } console.log(parseDateUTC('2016-10-12 05:03:51').toLocaleString()); 

如果要使用moment.js,可以執行以下操作。 它會在解析字符串時強制使用UTC,然后在本地將其寫入輸出:

 var d = moment.utc('2016-10-12 05:03:51','YYYY-MM-DD HH:mm:ss'); console.log(d.local().format()); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.0/moment.js"></script> 

既然您已經標記了“ moment ,我假設您正在使用“時刻”。

在這種情況下,您應該保持方法的一致性,並且不要混淆時間和日期對象。

 var dateStr = '2016-10-12 05:03:51'; var timeZone = "+0530"; var date = moment.utc(dateStr).utcOffset(dateStr + timeZone) console.log(date.toString()) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM