2016-03-03 165 views
2

我正在尋找一個javascript函數將UTC日期時間轉換爲傳遞時區的日期時間格式。我必須根據用戶的位置傳遞時區。我不能使用任何日期庫。JavaScript:將UTC日期時間轉換爲傳遞時區日期時間

我UTC時間字符串:"2016-04-10 09:00:00.0"

傳遞時區:EST

預期輸出1:"April 10,2016"

預計輸出2:04 AM EST

你能給關於JS的功能acheive一些見解我需求?

P.S:我不能使用任何第三方數據庫進行這項工作。

+1

你應該告訴你嘗試一下,這是不是一個免費的編碼服務。如果這是作業或作業,你應該這樣說。你的字符串與任何標準都不一致,你需要手動解析(2行代碼)。調整到特定的時區只需要修改適當的時間。關於如何做到這一點,在這裏有許多問題和答案。搜索,嘗試一些,如果它不起作用,再次發佈。 – RobG

回答

0

您可以創建一個函數像下面以UTC時間轉換爲一個給定的時區偏移:

//function to calculate local time 
 
function calcTime(datestring, city, offset) { 
 

 
    d = new Date(datestring); 
 

 
    utc = d.getTime() + (d.getTimezoneOffset() * 60000); 
 

 
    nd = new Date(utc + (3600000 * offset)); 
 

 
    var options = {} 
 
    // an application may want to use UTC and make that visible 
 
    options.timeZone = 'America/' + city; 
 
    options.timeZoneName = 'short'; 
 

 
    return nd.toLocaleString('en', options) 
 

 

 
} 
 

 

 
document.write('Local time on server: 2016-04-10T09:00:00' + '<br>') 
 
document.write('Local time in EST/EDT:' + calcTime('2016-04-10T09:00:00', 'New_York', '-5.0'));

如果你只需要支持不同的時區,在美國,你可以創建一個匹配時區偏移到正確城市的查找表

Eastern ........... America/New_York 
Central ........... America/Chicago 
Mountain .......... America/Denver 
Mountain no DST ... America/Phoenix 
Pacific ........... America/Los_Angeles 
Alaska ............ America/Anchorage 
Hawaii ............ America/Adak 
Hawaii no DST ..... Pacific/Honolulu 

正如你所看到的邏輯快速ly變得複雜,因此在可能的情況下更好地使用外部庫。

+0

這是不工作與Firefox和即 – user5970552

+0

我越來越無效的日期作爲迴應 – user5970552

+0

我已經修復IE瀏覽器,它似乎Chrome是更寬鬆的日期格式 – Jaco

0

我利用這個時間管理,儘量也許你你正在尋找這個

Moment.js

+0

這不是一個答案,它應該是一個評論。 OP也表示圖書館不能使用。 – RobG

+0

好吧,對不起男人,我想其他的事情 –

相關問題