我有一个代码脚本来计算今天和预期日期之间的天数:
let date1 = new Date(); //today
let date = new Date("04/19/2022") //expected day
let differenceInTime = date1.getTime() - date.getTime(); //difference by milliseconds
let differenceInDay = (differenceInTime - differenceInTime%(1000 * 3600 * 24))/(1000 * 3600 * 24); // JS does not supports dividing by whole so I implement this to get the number of days
对于所有情况,结果都是正确的,除了当我选择今天(明天)之后的一天作为预期的日子时,结果也是0。我的代码中是否有不准确的地方?
你的代码的问题是,在第4行你有点修复differenceInTime
为0小数和期望的日子和今天之间的差异小于1天,所以它将被截断。
这样做更容易。使用数学方法或num.toFixed()
你的代码会更简洁。
你甚至不需要date.getTime()
,因为date
会自动对其进行数学运算时转换为ms。
let date1 = new Date(); //today
let date = new Date("04/20/2022"); //expected day
let differenceInMS = date1 - date; //difference in ms
let differenceInDay = (differenceInMS / 8.64e7).toFixed(1); // 8.64e+7 : a day in ms
console.log(differenceInDay);
转换为毫秒,然后执行相同的逻辑