假設我有一個ISO日期,例如2021-09-18T20:18:27.000Z
- 我想獲得過去一周的日期。
- 我想以一個陣列的形式獲得過去一周的日期 。
- 該陣列應該是一組有兩個ISO日期的陣列,代表一天的開始和一天的結束,如下圖所示:
例如:
輸入:
2021-0918T20。 18: 27. 000Z
輸出:
[
['"2021-09-11T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-12T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-13T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-14T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-15T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-16T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-17T00:00:00.000Z', '"2021-09-11T23:59:59.000Z'],
['"2021-09-18T00:00:00.000Z', '"2021-09-18T23:59:59.000Z'],
]
我已經用dayjs試過了,這樣的結果是陣列代表了從某個特定日期開始的精確間隔:
function getDates(date){
var dates = [date] 。
var noOfDays =7
for (let i = noOfDays - 1; i >=0; i--) {
const elementIndex = i - noOfDays //獲取串列中最后的第n個元素。
const dateToIncrement = dates.slice(elementIndex)[0]
const newDate = dayjs(dateToIncrement)。 subtract(1, "day" ).toISOString()
dates.unshift(newDate)
}
return dates.
}
謝謝你
uj5u.com熱心網友回復:
function getPastWeek(inputTime){
var res = []; //result array >。
var currentDayEnd = undefined; //variable to be set on each iteration.
var currentDay = new Date(輸入時間。 split('T')[0]); //創建新日期物件。
currentDay.setDate(currentDay.getDate() - 7); //從當前日期減少七天。
for(var i = 0; i <= 7; i ) { //foreach day in last week
currentDayEnd = new Date(currentDay. getTime() - 1000); //前一天結束(在當前一天開始前1秒)
currentDayEnd.setDate(currentDayEnd.getDate() 1); //當前一天結束(前一天結束后一天)。
res.push([currentDay.toISOString(), currentDayEnd.toISOString()]); /append pair
currentDay.setDate(currentDay.getDate() 1); //set variable to next day。
}
return res;
}
var pastWeek = getPastWeek('2021-09-18T20:18:27.000Z'); /call example
uj5u.com熱心網友回復:
OP的代碼非常接近,你應該能夠根據你的需要進行調整。下面采用了一個類似的演算法。一天的結束時間被設定為午夜前的1ms。
。// Given a UTC ISO 8601 timestamp, return array of day plus
//前6天的開始和結束時間圖。
function getDates(d) {
let s = new Date(d. slice(0,10))。)
let e = new Date( s)。
e.setUTCHours(23,59,59,999)。
let result = [];
for (let i=7; i; i--) {
result.push([s.toISOString(), e.toISOString()] )。
s.setUTCDate(s.getUTCDate() - 1) 。
e.setUTCDate(e.getUTCDate() - 1) 。
}
return result;
}
console.log(getDates(newDate(). toISOString());
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328397.html
標籤:
