JavaScript使用new Date()格式化时间获取当日00:00与23:59格式字符串
JavaScript 日期格式化实现方案
你可以通过补零处理拼接字符串,或者直接操作Date对象的setHours方法实现需求,两种常用实现方式如下:
方式1:直接拼接字符串(仅需格式化输出时使用)
这种方式基于你原有代码逻辑修改,额外添加了个位数前导补零处理,避免出现2021-1-9 0:5这类不符合格式要求的输出:
// 补零辅助函数:小于10的数字前自动补0 const padZero = num => num < 10 ? '0' + num : num.toString(); const date = new Date(); const year = date.getFullYear(); const month = padZero(date.getMonth() + 1); const day = padZero(date.getDate()); // 直接拼接目标格式字符串 const dayStartTime = `${year}-${month}-${day} 00:00`; const dayEndTime = `${year}-${month}-${day} 23:59`; console.log(dayStartTime); // 输出示例:2021-10-28 00:00 console.log(dayEndTime); // 输出示例:2021-10-28 23:59
方式2:操作Date对象(需后续使用时间对象做计算时使用)
如果你后续需要对生成的时间做大小比较、时间戳计算等操作,可以直接修改Date对象的时分属性,再统一格式化输出:
const padZero = num => num < 10 ? '0' + num : num.toString(); // 统一格式化Date对象的工具函数 const formatFullDate = (targetDate) => { return `${targetDate.getFullYear()}-${padZero(targetDate.getMonth() + 1)}-${padZero(targetDate.getDate())} ${padZero(targetDate.getHours())}:${padZero(targetDate.getMinutes())}`; } const originalDate = new Date(); // 生成当天00:00的Date对象,依次设置时、分、秒、毫秒 const startDate = new Date(originalDate); startDate.setHours(0, 0, 0, 0); // 生成当天23:59的Date对象 const endDate = new Date(originalDate); endDate.setHours(23, 59, 0, 0); console.log(formatFullDate(startDate)); // 输出示例:2021-10-28 00:00 console.log(formatFullDate(endDate)); // 输出示例:2021-10-28 23:59
注意事项
- 如果你的运行环境支持ES6+,可以直接用
num.toString().padStart(2, '0')替代自定义的补零逻辑,效果完全一致 - 直接修改原Date对象会改变原有值,所以操作前要通过
new Date(originalDate)拷贝一份新对象,避免影响原有数据
内容的提问来源于stack exchange,提问作者deskeay
相关产品推荐
相关产品推荐

