Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getTimezoneOffset()在夏令时转换期间是否稳定?_Javascript_Angularjs_Datetime_Timezone_Datetime Format - Fatal编程技术网

Javascript getTimezoneOffset()在夏令时转换期间是否稳定?

Javascript getTimezoneOffset()在夏令时转换期间是否稳定?,javascript,angularjs,datetime,timezone,datetime-format,Javascript,Angularjs,Datetime,Timezone,Datetime Format,我在Javascript中有日期-时间转换逻辑,它将UTC时间转换为传递的时区的本地时间。我想知道这种逻辑在日光转换期间是否能正常工作?如果没有,有什么补救办法?我不能使用任何第三方图书馆。我必须使用纯javascript或Angular JS 函数myTime() { var d1=document.getElementById(“txtDate”).value; var zOffset=document.getElementById(“txtOffset”).value; 控制台日志(“日

我在Javascript中有日期-时间转换逻辑,它将UTC时间转换为传递的时区的本地时间。我想知道这种逻辑在日光转换期间是否能正常工作?如果没有,有什么补救办法?我不能使用任何第三方图书馆。我必须使用纯javascript或Angular JS

函数myTime()
{
var d1=document.getElementById(“txtDate”).value;
var zOffset=document.getElementById(“txtOffset”).value;
控制台日志(“日期1”,d1);
var d2=新日期(d1.replace(//g,'T'));
变量d3=d2.getTime()+(d2.getTimezoneOffset()*60000);
控制台日志(“日期2”,d2);
控制台日志(“日期3”,d3);
var d4=新日期(d3+(3600000*zOffset));
控制台日志(“日期3”,d3);
控制台日志(“日期4”,d4);
var d5=d4.toLocaleTimeString();
控制台日志(“日期5”,d5);
//d6=d5。匹配(/(\d+)(=:\d+:\d+)([A-Z]+)(?=$)/g)。连接(“”);
//控制台日志(“日期6”,d6)
document.getElementById(“hourValue”).innerHTML=d5;
}

时区
日期时间
时区
getTimezoneOffset只获取主机系统的偏移量,因此它与主机一样“稳定”

注意:使用日期构造函数解析字符串几乎完全依赖于实现,而且非常不可靠,只是不要这样做。总是手动解析字符串。库可以提供帮助,但特定格式的解析函数只有2行(3行带有验证)

当您将“2016-04-10 09:00:00.0”更改为“2016-04-10T09:00:00.0”时,您已经创建了一个不带时区的ISO 8601日期和时间字符串。如果解析正确(使用中的浏览器中约有10%根本不会解析),则应将其视为本地日期和时间(Chrome错误地将其视为UTC,IE 11正确地视为本地),因此主机系统设置将用于调整创建日期的UTC时间值,以使其表示相同的时间

e、 g

应打印2016年4月10日上午09:00的日期,而不考虑主机系统的时区偏移(但在将其视为UTC的浏览器中不打印,这是错误的)

如果要找出其他时区中的等效时间,请使用UTC方法调整所需偏移的日期(或直接设置时间值)。然后使用UTC方法读取日期和时间值

e、 g.要查找UTC+05:30的等效时间,您可以执行以下操作:

函数toLocalISO(d){
函数z(n){return(ngetTimezoneOffset只获取主机系统的偏移量,因此它与主机一样“稳定”

注意:使用日期构造函数解析字符串几乎完全依赖于实现,而且非常不可靠,只是不要这样做。始终手动解析字符串。库可以提供帮助,但特定格式的解析函数只有2行(3行带有验证)

当您将“2016-04-10 09:00:00.0”更改为“2016-04-10T09:00:00.0”时,您已经创建了一个没有时区的ISO 8601日期和时间字符串。如果解析正确(使用中的浏览器中约有10%根本不会解析),则应将其视为本地日期和时间(Chrome错误地将其视为UTC,即11正确地视为本地),因此主机系统设置将用于调整创建日期的UTC时间值,使其表示相同的时间点

e、 g

应打印2016年4月10日上午09:00的日期,而不考虑主机系统的时区偏移(但在将其视为UTC的浏览器中不打印,这是错误的)

如果要找出其他时区中的等效时间,请使用UTC方法调整所需偏移量的日期(或直接设置时间值)。然后使用UTC方法读取日期和时间值

e、 g.要查找UTC+05:30的等效时间,您可以执行以下操作:

函数toLocalISO(d){

函数z(n){return(n您想做什么?如果您想将“2016-04-10 09:00:00.0”视为本地(即基于主机系统设置),然后找出其他时区中的等效时间,您可以完全忽略主机时区。您想做什么?如果您想将“2016-04-10 09:00:00.0”视为本地(即基于主机系统设置),然后找出其他时区的等效时间,您可以完全忽略主机时区。非常感谢。我可以说这个逻辑也适用于日光节约过渡时间吗?您可以说两点。首先,为了与ISO 8601和ECMA-262“2016-04-10T09:00:00.0”保持一致应该被解析为本地。如果是,主机时区偏移将影响创建的时间值。其次,Date.parse不可信(当前两个浏览器的不一致性证明了这一点)。因此,如果您希望字符串被视为UTC,请手动将其解析为UTC,使用UTC方法应用时区偏移量,然后使用UTC方法获取结果日期和时间值。非常感谢。我可以说这个逻辑也适用于DayLightSaving过渡时间吗?您可以说两件事。首先,为了与ISO 8601和ECMA-262保持一致,“2016-04-10T09:00:00.0”应该被解析为本地。如果是,主机时区偏移将影响创建的时间值。其次,Date.parse不可信(当前两个浏览器的不一致性证明了这一点)。因此,如果要将字符串视为UTC,请将其手动解析为UTC,使用UTC方法应用时区偏移,然后使用UTC方法获取结果日期和时间值。
alert(new Date("2016-04-10T09:00:00.0"));