我有以下函数,用于将
然而,这个数字并不与新西兰的夏令时(+12或+13)有关。因此,如何获得相对于新西兰夏令时的正确数字变得复杂起来(+12或+13)。我的初步尝试只是计算它是否在9月的最后一个星期日或4月的第一个星期日之间,但我意识到,只要在代码中的任何地方使用
msSinceEpoch
转换为新西兰日期(兼容IE11)...
const MAGICNUMBER = 13;
const toNewZealand = (msSinceEpoch) => {
const [day, month, year, time] = new Date(msSinceEpoch).toLocaleString("en-NZ", {
hour12: false, timeZone: "UTC"
}).split(/[/,]/); // timeZone UTC is the only format support on IE11
const [hours, minutes, seconds] = time.trim().split(":");
return new Date(~~year, ~~month - 1, ~~day, ~~hours + MAGICNUMBER, ~~minutes, ~~seconds)
};
// usage....
console.log(
toNewZealand(new Date().getTime())
)
new Date()
构造函数,它就会创建一个相对于他们系统时间的日期并打破数学计算。简而言之,将自纪元以来的UTC毫秒转换为适用于新西兰夏令时设置的新西兰时间。编辑:由于捆绑大小成本,也不想使用Moment或任何其他库来解决此问题。