我正在尋找一個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:我不能使用任何第三方數據庫進行這項工作。
我正在尋找一個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:我不能使用任何第三方數據庫進行這項工作。
您可以創建一個函數像下面以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變得複雜,因此在可能的情況下更好地使用外部庫。
這是不工作與Firefox和即 – user5970552
我越來越無效的日期作爲迴應 – user5970552
我已經修復IE瀏覽器,它似乎Chrome是更寬鬆的日期格式 – Jaco
你應該告訴你嘗試一下,這是不是一個免費的編碼服務。如果這是作業或作業,你應該這樣說。你的字符串與任何標準都不一致,你需要手動解析(2行代碼)。調整到特定的時區只需要修改適當的時間。關於如何做到這一點,在這裏有許多問題和答案。搜索,嘗試一些,如果它不起作用,再次發佈。 – RobG