生成2个日期之间的所有数字,另存为[day,hour]

时间:2018-11-25 20:50:19

标签: javascript

给我2个日期,另存为2个数字[小时,工作日],其中小时可以是0-23,而工作日可以是1-7。然后,我尝试生成其间的所有小时数,例如[13,2]和[2,3]会生成:

[13,2]
[14,2]
[15,2]
...
[0,3]
[1,3]
[2,3]

我还有2个日期作为日期时间,但是我不知道这些日期是否更容易使用。这两个日期之间相隔不超过几天,而且它们从未跨过周末。

3 个答案:

答案 0 :(得分:1)

您可以定义一个let mut file = File::create("model.json").expect("fail creating file"); let json = r#"{"key1": "value1", "key2": "value2"}"#; file.write_all(json.as_bytes()).expect("fail writing data"); 日期函数,该函数依赖next选择下一个小时和一天,然后可以通过一个简单的%循环生成范围内的所有日期:

while

答案 1 :(得分:0)

使用两个Date对象可能更容易。 像这样:

var date1 = new Date(2018, 11, 20, 13);
var date2 = new Date(2018, 11, 21, 3);
var result = [];


while(date1.getTime() <= date2.getTime()) {
   result.push(new Date(date1.getTime()))
   date1.setHours(date1.getHours() + 1);
}

console.log(result)

答案 2 :(得分:0)

您可以执行以下操作:

const getDate = (h, d) => {
  let date = new Date()
  date.setHours(h)
  date.setDate(date.getDate() - date.getDay() + d);
  return date
}
const generateRange = (s, e) => {
  let [startHour, startDay] = s, [endHour, endDay] = e, result = []
  startDate = getDate(startHour, startDay), endDate = getDate(endHour, endDay)

  while (startDate < endDate) {
    startDate.setHours(startDate.getHours() + 1)
    result.push([startDate.getHours(), startDate.getDay()])
  }
  return result
}

console.log(generateRange([13, 2], [2, 3]))
console.log(generateRange([11, 1], [3, 2]))

这个想法是创建2个日期,然后在while循环中继续添加小时数,直到您的开始日期不再小于结束日期为止。