求JavaScript实现无限生成每周第一天日期的解决方案
生成每周第一天日期的实现方案
根据你的需求,这里提供两种常见每周第一天定义(周日/周一)的实现代码,可直接替换原代码中的dateOfTheFirstDay部分:
方案1:以周日为每周第一天
// 生成本周第一天(周日)的Date对象,时间固定为00:00:01 function getFirstDayOfWeekSunday() { const today = new Date(); const dayOfWeek = today.getDay(); // 0代表周日,1-6对应周一到周六 const diffDays = today.getDate() - dayOfWeek; const firstDay = new Date(today.setDate(diffDays)); firstDay.setHours(0, 0, 1, 0); // 设置时分秒及毫秒 return firstDay; } // 替换原代码中的null const dateOfTheFirstDay = getFirstDayOfWeekSunday(); const d = new Date(dateOfTheFirstDay); setNewWeekTime(d.getTime());
方案2:以周一为每周第一天
// 生成本周第一天(周一)的Date对象,时间固定为00:00:01 function getFirstDayOfWeekMonday() { const today = new Date(); const dayOfWeek = today.getDay(); // 0代表周日,1-6对应周一到周六 // 计算与周一的天数差:周日需要往前推6天,其他日期推(当前星期数-1)天 const diffDays = today.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1); const firstDay = new Date(today.setDate(diffDays)); firstDay.setHours(0, 0, 1, 0); // 设置时分秒及毫秒 return firstDay; } // 替换原代码中的null const dateOfTheFirstDay = getFirstDayOfWeekMonday(); const d = new Date(dateOfTheFirstDay); setNewWeekTime(d.getTime());
可选:生成指定格式的日期字符串
如果需要得到你标注的"April 9, 2023 00:00:01"格式字符串,可添加格式化函数:
// 将Date对象格式化为指定字符串格式 function formatToTargetStr(date) { const datePart = date.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); return `${datePart} 00:00:01`; } // 使用示例 const formattedFirstDay = formatToTargetStr(getFirstDayOfWeekSunday()); // formattedFirstDay 结果示例:"April 9, 2023 00:00:01"
内容的提问来源于stack exchange,提问作者Raphael Inyang
相关产品推荐
相关产品推荐

