我正在将一些依赖于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_York
,Europe/London
或Europe/Madrid
。格式化程序会传递到Date.parse
中,以将其转换为适当的ms
格式。
我很难确定该功能是否已经解决了夏时制问题。如果没有,我可以在其他地方做一些逻辑转换,以将两次与适当的DST值进行比较。
这是否已经存在?是在函数的内部,还是该函数的第一个arg的一部分?只是无法在文档中找到信息。
答案 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>