距离明天还有多少秒?
重要程度: 5
写一个函数 getSecondsToTomorrow()
,返回距离明天的秒数。
例如,现在是 23:00
,那么:
getSecondsToTomorrow() == 3600
P.S. 该函数应该在任意一天都能正确运行。那意味着,它不应具有“今天”的硬编码值。
为获取距离明天的毫秒数,我们可以用“明天 00:00:00”这个日期减去当前的日期。
首先我们生成“明天”,然后对其进行减法操作:
function getSecondsToTomorrow() {
let now = new Date();
// tomorrow date
let tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate()+1);
let diff = tomorrow - now; // difference in ms
return Math.round(diff / 1000); // convert to seconds
}
另一种解法:
function getSecondsToTomorrow() {
let now = new Date();
let hour = now.getHours();
let minutes = now.getMinutes();
let seconds = now.getSeconds();
let totalSecondsToday = (hour * 60 + minutes) * 60 + seconds;
let totalSecondsInADay = 86400;
return totalSecondsInADay - totalSecondsToday;
}
请注意,很多国家有夏令时(DST),因此他们的一天可能有 23 小时或者 25 小时。我们对这些天数要区别对待。