【问题标题】:generate a specific number of dates from an array of days从天数数组中生成特定数量的日期
【发布时间】:2023-01-11 10:53:22
【问题描述】:

如果我有一个数组:['Thursday', 'Friday']

我想在这些天的下一个日期生成 5 个日期

例如,我想要的结果是下周四是 14/7/2022,下周五是 15/7/2022 输出应该是:

 Thursday  ,    Friday   ,   Thursday  ,   Friday    ,   Thursday   

=> 输出 ['14/7/2022', '15/7/2022' , '21/7/2022' , '22/7/2022' , '28/7/2022']

【问题讨论】:

  • 你试过什么了?

标签: javascript


【解决方案1】:

如果您可以为此使用库,那么moment.js 将对您有很大帮助。

来自that question,我们可以为您的案例创建解决方案。

您可以使用 moment.js 从字符串中获取日期,然后使用上述问题的解决方案获取下周星期几的日期

【讨论】:

  • 问题也是,假设有 5 个或更多会话的会议会话。我想在指定的日期分发它们。每周四、周五有会议
【解决方案2】:

这可以通过 javascript 中的两个简单函数来实现

第一个是知道你所在的当前日期(和当天)

const d = new Date();
const day = d.getDay();
The getDay() method returns the day of the week (0 to 6) of a date.

Sunday = 0, Monday = 1, ... (See below):

更多信息在这里:https://www.w3schools.com/jsref/jsref_getday.asp

知道日期后,您只需要将数组从 ['Thursday', 'Friday'][4,5]

然后你需要计算天数之间的偏移量

let offset = (targetDay - currentDayInNumber) % 7
if (offset < 0) { offset += 7 } // Want to make sure you offset is always positive

周二 = 2、周四 = 4 或周一 = 1 的示例

let offset = (4 - 2) % 7 // ( 2 )
let offset = (1 - 2) % 7 // (-1)
offset = -1 + 7 // (6) we will be adding 6 days

然后你可以简单地循环并添加天数

var date = new Date();
date.setDate(date.getDate() + days); // For tomorrow + 1 for example

让我知道是否有帮助,否则可以为您提供完整的解决方案,但想提供指导而不是提供解决方案

- 编辑 - 为了完成这个并发生这些事情,你可以有一个计数器

const counterDays = {
 0:0,
 1:0,
 ..,
 6:0
}

通过循环时,每次设置一天时,都会增加它的计数器 这将变成这样:

date.setDate(date.getDate() + offset + 7 * counterDays[targetDay]);
counterDays[targetDay]++;

我在这里为您提供了示例代码: https://onecompiler.com/javascript/3y9sb8dqe 希望这可以帮助

【讨论】:

  • 问题也是,假设有 5 个或更多会话的会议会话。我想在指定的日期分发它们。每周四、周五有会议
  • 您可以轻松调整上述内容并为数组 [4,5,4,4] 中出现的次数添加一个乘数,第一个是 0x7,第二个 4 加 1x7,第三个加 2x7,。 .. 等这不理想,在这种情况下我会推荐使用 moment.js 的其他解决方案
  • 看帖子更新
  • 我认为从上面的答案你应该能够适应这里给出的例子
【解决方案3】:

如果它是每周session 那么你的答案就在这里 https://stackoverflow.com/a/75077398/12197408

这是关于会议和每个会议都有它的日子,答案是关于什么时候下一个/上一个会话包括多少剩余天数

我希望它能帮助你。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多