DateTimeFormat是否考虑夏令时?

时间:2018-12-26 18:26:28

标签: javascript

我正在将一些依赖于moment-timezone的时间检查转换为使用INTL.DateTimeFormat

对于上下文,代码以毫秒为单位(Date.now()),以用户的当前时间为单位,并针对三个时区(每个网站都有其自己的语言环境)进行检查:

const formatter = Intl.DateTimeFormat([], {
  timeZone: timezone,
  year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', 
  minute: 'numeric', second: 'numeric',
})

时区为America/New_YorkEurope/LondonEurope/Madrid。格式化程序会传递到Date.parse中,以将其转换为适当的ms格式。

我很难确定该功能是否已经解决了夏时制问题。如果没有,我可以在其他地方做一些逻辑转换,以将两次与适当的DST值进行比较。

这是否已经存在?是在函数的内部,还是该函数的第一个arg的一部分?只是无法在文档中找到信息。

1 个答案:

答案 0 :(得分:1)

尝试一下:

<html>
<head>
<script language="JavaScript">

// function to calculate local time
// in a different city
// given the city's UTC offset
function calcTime(city, offset) {

    // create Date object for current location
    d = new Date();
    
    // convert to msec
    // add local time zone offset 
    // get UTC time in msec
    utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    
    // create new Date object for different city
    // using supplied offset
    nd = new Date(utc + (3600000*offset));
    
    // return time as a string
    return "The local time in " + city + " is " + nd.toLocaleString();

}

alert(calcTime('New York ', '-5'));

alert(calcTime('Madrid', '+1'));

alert(calcTime('London', '+1'));

</script>
</head>
<body>

</body>
</html>