如何使用夏令时获取Javascript中任何时区的正确日期和时间?

时间:2018-08-13 08:45:18

标签: javascript timezone dst

我有两种类型的时区格式

  • (GMT-05:00)美国/纽约。
  • 美国/纽约

我的要求是,每当添加任何时区时,我都会获得正确的日期时间。

我使用的代码

var timezone= '(GMT-05:00) America/New_York';;

    var getTimezoneDate=function(offset) {


       var currentDate = new Date();
       var utcTime = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000);
       var tzDate = new Date(utcTime + (3600000*offset));
       return tzDate;

     };

    var getOffset=function(tz){
       var offset='';
       var dthr=tz.slice(4, 7);
       var dtmi=tz.slice(8, 10);

       if(dtmi=='30')
       {
         offset=dthr+'.5';
       }
       else
       {
         offset=dthr;
       }
       return offset;
     };
     var tzoffset=getOffset(timezone);
     var tzdate=getTimezoneDate(tzoffset);
     console.log(tzdate);

输出:- 2018年8月13日星期一03:35:34 GMT + 0530(印度标准时间)

输出时间比当前时间晚1小时,并且使用系统GMT。据我所知,这是DST问题。如何使用DST获得正确的时间。

必填输出:- 2018年8月13日星期一04:35:34 GMT-4

我也在尝试

var userDate=new Date(new Date().toLocaleString("en-US", {timeZone: 'America/New_York'}));

但是旧浏览器不支持。

(无需外部库)

0 个答案:

没有答案