gpt4 book ai didi

javascript - Moment.js 获取最近 4 小时的范围

转载 作者:行者123 更新时间:2023-11-29 15:13:45 25 4
gpt4 key购买 nike

我正在使用 moment.js,我想获取最近 4 小时的范围。

例子

如果现在是 26/07/2018 02:39

我想获得以下形式的范围数组:

[
{from:'26/07/2018 02:00' , to:'26/07/2018 02:39'},
{from:'26/07/2018 01:00', to:'26/07/2018 02:00'},
{from:'26/07/2018 00:00', to:'26/07/2018 01:00'},
{from: '25/07/2018 23:00', to:'26/07/2018 00:00'}
]

以上只是我希望过去 4 小时持续时间的示例。

到目前为止我已经试过了:

let current = moment();
//here am stuck on how to substract the above

应该是这样的:

moment().substract(1, 'hours') 

但是,上面的代码从 02:39 中减去一小时,将返回 01:39。我该如何减去小时数才能得到所需的解决方案?

最佳答案

您可以使用 momentjs 库中的 .startOf() 方法实现此目的,以获取您的第一个 from 时间。

从那里,您可以使用 .subtract() 方法在您需要的范围内减少时间。还要注意 .clone() 的使用,以确保

例如,这样的函数将生成您需要的时间数组:

function getFourTimeRanges( timestampString ) {

// Parse first "to" time for range, from input timestamp string
// (based on format in your question)
var firstTo = moment(timestampString , 'DD-MM-YYY HH:mm');

// Calculate first "from" time using startOf to "round down" to
// start of current hour
var firstFrom = firstTo .clone().startOf('hour');

var format = 'DD/MM/YYYY HH:mm'

// Add first formatted range into timeRanges array
var timeRanges = [{
from : firstFrom.format(format),
to : firstTo.format(format)
}]

// Iterate three times to compute and add remaining time ranges
// to timeRanges result array
for(var i = 0; i < 3; i++) {

// Calculate "from" and "to" times for each of the remaining
// times ranges we want to calculate
var from = firstFrom.clone().subtract(i + 1, 'hours').startOf('hour')
var to = firstFrom.clone().subtract(i, 'hours').startOf('hour')

// Add formatted time range to timeRanges array
timeRanges.push({
from : from.format(format),
to : to.format(format)
})
}

return timeRanges
}

// Then use method as follows

getFourTimeRanges('26/07/2018 02:39')

/*
[
{
"from": "26/07/0018 02:00",
"to": "26/07/0018 02:39"
},
{
"from": "26/07/0018 01:00",
"to": "26/07/0018 02:00"
},
{
"from": "26/07/0018 00:00",
"to": "26/07/0018 01:00"
},
{
"from": "25/07/0018 23:00",
"to": "26/07/0018 00:00"
}
]
*/

关于javascript - Moment.js 获取最近 4 小时的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com