簡體   English   中英

如何為每個下一個數組元素添加新的分鍾值?

[英]How to add new minutes value for every next array element?

我想為數組中的每個下一個值增加 36 分鍾,但數組中的所有元素只增加一次 如何實現我上面描述的算法

 let timestamps = [ "2020-01-21T22:36:00.000Z", "2020-01-21T23:12:00.000Z", "2020-01-21T23:48:00.000Z", "2020-01-22T00:24:00.000Z", "2020-01-22T01:00:00.000Z", ] const minutesToAdjust = 36 const millisecondsPerMinute = 60000 const oneDay = 1000 * 60 * 60 * 24 const twentyFourHours = new Date(new Date() - oneDay) const transformTimeseriesTo24h = timestamps.map(el => { el = new Date(twentyFourHours + (minutesToAdjust * millisecondsPerMinute)) return el }) timestamps = transformTimeseriesTo24h console.log(timestamps)

您的代碼通過立即分配給el來忽略原始日期。 相反,由於它們是有效的 ISO-8601 日期/時間字符串,解析它們然后向它們添加 36 分鍾:

timestamps = timestamps.map(el => {
    const dt = new Date(el);
    dt.setMinutes(dt.getMinutes() + 36); // Will wrap for you
    return dt; // Or `return dt.toISOString();`
});

現場示例:

 let timestamps = [ "2020-01-21T22:36:00.000Z", "2020-01-21T23:12:00.000Z", "2020-01-21T23:48:00.000Z", "2020-01-22T00:24:00.000Z", "2020-01-22T01:00:00.000Z", ]; timestamps = timestamps.map(el => { const dt = new Date(el); dt.setMinutes(dt.getMinutes() + 36); // Will wrap for you return dt; // Or `return dt.toISOString();` }); console.log(timestamps);

或者......“每個下一個值”聽起來像是你想在第一個值上加 0,在第二個值上加 36 分鍾,在第三個值上加 72 (36 * 2) 分鍾,......? 如果是這樣,您可以使用map傳遞的索引作為第二個參數:

timestamps = timestamps.map((el, index) => {
    const dt = new Date(el);
    dt.setMinutes(dt.getMinutes() + (index * 36)); // Will wrap for you
    return dt; // Or `return dt.toISOString();`
});

現場示例:

 let timestamps = [ "2020-01-21T22:36:00.000Z", "2020-01-21T23:12:00.000Z", "2020-01-21T23:48:00.000Z", "2020-01-22T00:24:00.000Z", "2020-01-22T01:00:00.000Z", ]; timestamps = timestamps.map((el, index) => { const dt = new Date(el); dt.setMinutes(dt.getMinutes() + (index * 36)); // Will wrap for you return dt; // Or `return dt.toISOString();` }); console.log(timestamps);


我不知道您是否想要以 ISO 字符串的Date實例結束。 上面的結果是Date實例。 如果你想要 ISO 字符串,只需在返回它時在dt上調用toISOString() (見上面的評論)。

使用Date.parse(el)

 let timestamps = [ "2020-01-21T22:36:00.000Z", "2020-01-21T23:12:00.000Z", "2020-01-21T23:48:00.000Z", "2020-01-22T00:24:00.000Z", "2020-01-22T01:00:00.000Z", ] const minutesToAdjust = 36 const millisecondsPerMinute = 60000 const oneDay = 1000 * 60 * 60 * 24 const twentyFourHours = new Date(new Date() - oneDay) const transformTimeseriesTo24h = timestamps.map(el => { return new Date(Date.parse(el) + (minutesToAdjust * millisecondsPerMinute)) }) timestamps = transformTimeseriesTo24h console.log(timestamps)

您需要使用數組中的時間戳值並在其中添加偏移量

 let timestamps = [ "2020-01-21T22:36:00.000Z", "2020-01-21T23:12:00.000Z", "2020-01-21T23:48:00.000Z", "2020-01-22T00:24:00.000Z", "2020-01-22T01:00:00.000Z", ]; const minutesToAdjust = 36 const millisecondsPerMinute = 60000 const oneDay = 1000 * 60 * 60 * 24 const twentyFourHours = new Date(new Date() - oneDay) timestamps = timestamps.map(time => new Date(new Date(time).getTime() + minutesToAdjust * millisecondsPerMinute)); console.log(timestamps)

我會將您的時間戳轉換為Unix 時間,向其中添加 36*60 秒,然后將其轉換回您的格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM