我们使用一种方法来计算两个日期之间的天数差异:
function getDiffDateInDays(date1: Date, date2: Date): number {
let diffDays;
if (date1 && date2) {
const diff = date1.getTime() - date2.getTime();
diffDays = Math.ceil(diff / (1000 * 3600 * 24));
}
return diffDays;
}在我们的CI跑步者(跑步者在一台机器上运行UTC时间)上出现了一些问题之后,在局部上,我们看到了我们的方法结果因时区而异。
const date2 = new Date(2018, 2, 6);
const date3 = new Date(2018, 3, 12);
getDiffDateInDays(date2, date3) => -36使用UTC:
const date2 = new Date(Date.UTC(2018, 2, 6));
const date3 = new Date(Date.UTC(2018, 3, 12));
getDiffDateInDays(date2, date3) => -37有人能解释一下为什么这个结果不同吗?这两个日期之间的天数应该与任何时区相同吗?
发布于 2018-06-14 15:17:11
在时区的这些日期之间有一个DST转换,它增加或减去一个小时,这将导致一整天的差异,就像ceil计算的方式一样。
UTC是免费的,没有额外的/少的小时。
https://stackoverflow.com/questions/50860747
复制相似问题