a选择时间在30天内,按照天的维度展示,b超出30天,按照周维度展示,自然周即可,展示具体的时间区间,例:第一周(7月1~7日),第二周(7月8~14日)第三周(7月15~22日)第四周(7月23日~30日)第五周选择三天,则展示(8月1~3日),c、超出一年的,按照月维度展示即可
1条回答 默认 最新
- 愤怒的熊猫x 2023-04-05 10:34关注
// 假设输入的时间戳为timestamp const ONE_DAY = 24 * 60 * 60 * 1000; // 一天的毫秒数 const now = new Date(); const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime(); // 当天零点的时间戳 if (today - timestamp <= 30 * ONE_DAY) { // 选择时间在30天内,按照天的维度展示 const dates = []; let date = new Date(timestamp); while (date.getTime() <= today) { dates.push(date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate()); date = new Date(date.getTime() + ONE_DAY); } console.log(dates); // 输出每天的日期,如 ['2022-01-01', '2022-01-02', ...] } else if (today - timestamp <= 365 * ONE_DAY) { // 超出30天且不超过一年,按照周的维度展示 const weekStartEnd = []; let date = new Date(timestamp); while (date.getTime() < today) { const weekStart = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay()); // 当周的第一天 const weekEnd = new Date(date.getFullYear(), date.getMonth(), date.getDate() + (6 - date.getDay())); // 当周的最后一天 weekStartEnd.push(weekStart.getFullYear() + '年第' + getWeekNumber(weekStart) + '周(' + formatDate(weekStart) + '~' + formatDate(weekEnd) + ')'); date = new Date(weekEnd.getTime() + ONE_DAY); } console.log(weekStartEnd); // 输出每一周的时间段,如 ['2022年第1周(1月3日~1月9日)', '2022年第2周(1月10日~1月16日)', ...] } else { // 超出一年,按照月的维度展示 const monthStartEnd = []; let date = new Date(timestamp); while (date.getTime() < today) { const monthStart = new Date(date.getFullYear(), date.getMonth(), 1); // 当月的第一天 const nextMonthStart = new Date(monthStart.getFullYear(), monthStart.getMonth() + 1, 1); // 下个月的第一天 monthStartEnd.push(monthStart.getFullYear() + '年' + (monthStart.getMonth() + 1) + '月(' + formatDate(monthStart) + '~' + formatDate(new Date(nextMonthStart.getTime() - ONE_DAY)) + ')'); date = new Date(nextMonthStart.getTime() - ONE_DAY); } console.log(monthStartEnd); // 输出每个月的时间段,如 ['2022年1月(1月1日~1月31日)', '2022年2月(2月1日~2月28日)', ...] } function getWeekNumber(date) { const firstDayOfYear = new Date(date.getFullYear(), 0, 1); const daysSinceFirstDayOfYear = Math.floor((date.getTime() - firstDayOfYear.getTime()) / ONE_DAY); return Math.floor(daysSinceFirstDayOfYear / 7) + 1; } function formatDate(date) { return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(); }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器