如何从日期范围(开始日期和结束日期)生成每周列表?

用户名

我的开始日期为任何月份的星期一,结束日期为任何月份的星期日。我需要介于日期之间的周列表。例如,我选择开始日期为08/12/2019,结束日期为09/08/2019。作为输出,需要周列表。所以

{[08/12/2019,08/13/2019,08/14/2019,08/15/2019,08/16/2019,08/17/2019,08/18/2019],[08/19/2019,08/20/2019,08/21/2019,08/22/2019,08/23/2019,08/24/2019,08/25/2019],[08/26/2019,08/27/2019,08/28/2019,08/29/2019,08/30/2019,08/31/2019,09/01/2019],[09/02/2019,09/03/2019,09/04/2019,09/05/2019,09/06/2019,09/07/2019,09/08/2019]}

在react hook / js中需要。

var start = new Date("08/12/2019");
var end = new Date("09/08/2019");
var newStart = start.setDate(start.getDate()+7);

var days = [];
for (var d = begin; d <= newStart; d = d + 1) {
   days.push(new Date(d));
 }

这只能使用1周,没有太大帮助。

四十亿

您可以使用嵌套循环扩展解决方案:

const start = new Date("2019-08-12");
const end = new Date("2019-09-08");

const DAY = 24 * 60 * 60 * 1000;

const weeks = [];
for (let newStart = start.valueOf(); newStart < end; newStart += DAY * 7) {
  const days = [];
  for (let d = newStart; d < newStart + 7 * DAY; d += DAY) {
    days.push(new Date(d));
  }
  weeks.push(days);
}

console.log(weeks);

笔记:

  • 我使用标准的“日期时间字符串格式” YYYY-MM-DD来设置UTC的零时间偏移量,以避免出现随机时间偏移量
    • new Date(d).toJSON().slice(0, 10) 会以这种格式将日期转换回字符串
  • 我使用.valueOf()将Date转换为数字,以确保+操作员的 正确行为
    • 请注意,d + 1使用Date对象会将其转换为字符串并将其与'1'连接,因此我将其d用作Number来确保+添加了数字
    • d += DAY 是相同的 d = d + DAY
  • 在内部使用了let作为适当的块范围forvar将在函数范围内声明变量)
  • 我没有处理极端情况(不同类型,而不是日期,无限结束,星期几错误...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何生成一系列介于开始日期和结束日期之间的日期范围?

日期范围中的开始和结束日期

如何获取开始日期和结束日期之间的每周日期

具有特定开始和结束日期的 PHP 每周日期范围

在Oracle日期范围内生成开始日期和结束日期

如何使用R中的开始日期和结束日期创建每周总计

Mongo:如何按 $week 分组但返回每周的开始日期和结束日期?

Spring Data JPA返回具有指定范围(开始日期和结束日期)的日期列表

如何开始和结束日期

生成属于给定开始日期和结束日期的开始日期、结束日期和周数

循环以根据开始日期和结束日期生成日期列表

如何按月/周生成开始和结束日期向量,但如何使向量的最后结束日期以今天结束?

在给定开始日期和结束日期的情况下,如何创建日期范围

如何在 Rails 日期字段下拉列表中设置开始日期和结束日期选项?

如何删除指定开始日期和结束日期期间之外的列表的日期时间元素?

Google 表格 - 如何从开始日期和结束日期提取新列中的日期列表

使用开始和结束日期按日期范围扩展行

从时间戳范围获取开始日期和结束日期

从开始-结束日期和时间(UTC)找出日期范围

如何设置日期范围选择器中所选开始日期和结束日期之间的最短日期?

如何在材料日期范围选择器中获取开始日期和结束日期之间的日期

如何根据开始和结束获取for循环中的日期列表?

如何使用每周节目状态表创建显示节目开始和结束日期的表格

获取带有开始日期和结束日期的冲刺列表

如何将字符串日期范围更改为开始和结束日期?

如何从开始日期和结束日期识别和汇总序列

如何知道日期是否在开始/结束日期列表之间?

(Bootstrap) Vue Datepicker:如何定义开始和结束日期,使结束日期不能早于开始日期?

如何生成具有开始月份日期和结束月份日期的动态表 Teradata 或 SAS SQL