【发布时间】:2018-06-14 15:12:15
【问题描述】:
我们使用一种方法来计算两个日期之间的天数差异:
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
谁能解释一下为什么这个结果不同?两个日期之间的天数应该与任何时区相同?
【问题讨论】:
-
可能要考虑使用库来执行此操作,例如 momentjs
标签: javascript