Javascript 如何创建一个标准UTC时间计时器?

Javascript 如何创建一个标准UTC时间计时器?,javascript,date,Javascript,Date,我正在使用sun计算器,需要一个不受时区或DST更改影响的参考日期/时间。无论我多么努力,javascript(我想还有浏览器)都会破坏太阳在天空中的平稳运行。我怎样才能创建一个日期/时间,在没有这个该死的DST干扰的情况下,我可以以分钟、小时、天、月为单位逐步完成它分区和本地化是没有问题的。 问题似乎是,我定义的所有UTC日期总是跳入和跳出DST。只有真正的太阳不会 我在这里的一些不愉快的尝试: { //UTC DATE OVERALL myutcdate=new Date(myda

我正在使用sun计算器,需要一个不受时区或DST更改影响的参考日期/时间。无论我多么努力,javascript(我想还有浏览器)都会破坏太阳在天空中的平稳运行。我怎样才能创建一个日期/时间,在没有这个该死的DST干扰的情况下,我可以以分钟、小时、天、月为单位逐步完成它分区和本地化是没有问题的。 问题似乎是,我定义的所有UTC日期总是跳入和跳出DST。只有真正的太阳不会

我在这里的一些不愉快的尝试:

{   //UTC DATE OVERALL
   myutcdate=new Date(mydate.getUTCFullYear(),mydate.getUTCMonth(),mydate.getUTCDate(),mydate.getUTCHours(),mydate.getUTCMinutes());
   //myutcdate=new Date(mydate.valueOf()-localoffset*60*60*1000);
   //var utcoffset=myutcdate.getTimezoneOffset/-60;
   //if(mydate.isDST() && !myutcdate.isDST())myutcdate.setHours(myutcdate.getHours()+1);
   //if(myutcdate.isDST())myutcdate.setHours(myutcdate.getHours()-1);
   //myutcdate= new Date(mydate.getUTCFullYear(),mydate.getUTCMonth(),mydate.getUTCDate(),mydate.getUTCHours(),mydate.getUTCMinutes(),);
   //myutcdate= new Date(mydate.toUTCString());
   //myutcdate= new Date(mydate).toISOString();// returns just a sring, not a date, and cannot be converted to a date
   //myutcdate= new Date(mydate.toISOString());//returns plain local time
   //myutc= new Date(mydate.valueOf() - parseInt(localoffset)*60*60*1000 );
   //myutcdate=Date.UTC(myutc.getFullYear(),myutc.getMonth(),myutc.getDate(),myutc.getHours(),myutc.getMinutes());
   //myutcdate= new Date(myutcdate);
   //document.getElementById('utcdate').innerHTML=myutcdate;//.toSimpleIso(); //myutcdate with own format
   //document.getElementById('utcdate').innerHTML=myutcdate.getUTCFullYear()+"-"+String(myutcdate.getUTCMonth()+1)+"-"+myutcdate.getUTCDate()+" "+myutcdate.getUTCHours()+":"+myutcdate.getUTCMinutes();//.toSimpleIso(); //Yields to reducing double the zone of source date
   //document.getElementById('utcdate').innerHTML=myutcdate.getFullYear()+"-"+String(myutcdate.getMonth()+1)+"-"+myutcdate.getDate()+" "+myutcdate.getHours()+":"+myutcdate.getMinutes();//.toSimpleIso(); //myutcdate with own format
   document.getElementById('utcdate').innerHTML=mydate.toISOString();
}

日期构造函数假定为本地,要获取UTC,请使用Date.UTC生成时间值,例如

// Instead of 
new Date(mydate.getUTCFullYear(), ...)

// Use
new Date(Date.UTC(mydate.getUTCFullYear(),...))
//-------^^^^^^^^
然后对所有内容使用UTC方法


var d=新日期();
//使用UTC值复制日期
var c=新日期(Date.UTC(Date.utcfullyear()、d.getUTCMonth()、d.getUTCDate()、d.getUTCHours()、d.getUTCMinutes()、d.getUTCSeconds()、d.getUTCMilliseconds());
log(d.toISOString());

log(c.toISOString())请格式化您的代码。我建议您检查这里提到的库:但是这不是普通的。无论如何,我不清楚你到底做错了什么,因为UTC没有DST校正,只有本地时间可以。我创建的任何日期在传递切换日期和时间时都会跳入DST并跳出,无论我如何定义它。按照UTC的定义,他们只是从零区开始,但今年3月31日03:00到04:00增加了一个小时。谢谢,就这样!现在我的太阳平稳地在天空上滑行,尽管地球上的时钟调整得很愚蠢。为什么我自己找不到?每个查询都提供了不同的库,但不是本机解决方案。这我叫香草。拥抱