2016-03-03 203 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

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

相关问题