如何在JS/TS中将指定Epoch时间修改为次日凌晨12点?
在JavaScript/TypeScript中将指定时间戳转为次日零点的时间戳
假设你有一个Epoch时间戳1665531785000(对应2022年10月11日 星期二 晚上11:43:05),想要将其转换为次日零点的时间戳1665532800000(对应2022年10月12日 星期三 凌晨12:00:00),可以用以下两种简单方法实现:
方法一:通过Date对象直接调整时间
先将原时间戳转为Date对象,调整日期到次日,再把时分秒毫秒重置为0,最后转回时间戳:
const originalTimestamp = 1665531785000; // 基于原时间戳创建Date对象 const date = new Date(originalTimestamp); // 将日期加1天 date.setDate(date.getDate() + 1); // 重置时分秒及毫秒为0,确保是零点整 date.setHours(0, 0, 0, 0); // 转换为目标时间戳 const targetTimestamp = date.getTime(); console.log(targetTimestamp); // 输出:1665532800000
方法二:计算当天零点再加一天时长
先获取原时间戳对应日期的零点时间戳,再加上一天的毫秒数(86400000)得到次日零点:
const originalTimestamp = 1665531785000; const date = new Date(originalTimestamp); // 获取当天零点的时间戳 const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime(); // 次日零点 = 当天零点 + 一天的毫秒数(24*60*60*1000) const targetTimestamp = startOfDay + 86400000; console.log(targetTimestamp); // 输出:1665532800000
注意事项
- Date对象的
setDate、setHours方法会直接修改原对象,但上面的代码中我们是基于原时间戳创建新的Date对象,不会影响原数据。 - 两种方法都能正确处理跨月、跨年的情况(比如12月31日转1月1日),Date对象会自动处理月份和年份的进位。
内容的提问来源于stack exchange,提问作者vkesani
相关产品推荐
相关产品推荐

