如何使用Moment.js获取特定上一次/最后一次的时间戳



下面给出了当前日期时间的时间戳:

moment().utc().valueOf()

输出

1626964579209 // 2021-07-22T14:36:19Z

如何获取上一个/最后一个07:00 AM(2021-07-22T07:00:00Z(和11:00 PM(2021-07-11T23:00:00Z(日期时间的时间戳

请注意,在这种情况下,上一个/上一个11:00 PM时间戳来自前一天(2021-07-21(。

我试过玩Moment.js Durations和SubtractTime,但没有成功。

这里有一个StackBlitz游戏:https://stackblitz.com/edit/typescript-ofcrjs

提前感谢!

您可以进行

const currentDateTime = moment().utc();
console.log('Current date-time timestamp:', currentDateTime.valueOf());
console.log('Current date-time string:', currentDateTime.format());
// If the current date-time string is 2021-07-22T14:36:19Z
// then the previous/last 07:00 AM string is 2021-07-22T07:00:00Z and the
// previous/last 11:00 PM string is 2021-07-21T23:00:00Z (previous day)
let last7amTimestamp = currentDateTime.clone().startOf('d').add(7, 'h'); // ???
if (last7amTimestamp.isAfter(currentDateTime)) {
last7amTimestamp.subtract(1, 'd')
}
let last11pmTimestamp = currentDateTime.clone().startOf('d').add(23, 'h'); // ???
if (last11pmTimestamp.isAfter(currentDateTime)) {
last11pmTimestamp.subtract(1, 'd')
}
console.log('Previous/last 07:00 AM timestamp:', last7amTimestamp);
console.log('Previous/last 11:00 PM timestamp:', last11pmTimestamp);

你是这样说的吗?

moment('7:00 AM', 'h:mm A').subtract(1,'days').utc().valueOf();
moment('11:00 PM', 'hh:mm A').subtract(1,'days').utc().valueOf();

求出今天的时间,用1减去一天。

您可以测试当前UTC小时,如果它在所需的小时之后,只需将UTC小时设置为时间即可。如果在之前,请将其设置为前一天的小时,即24小时。

例如,在给定日期的情况下,获取上一个指定时间UTC的通用函数或默认为当前日期而不包含moment.js的通用函数为:

// Get the previous hour UTC given a Date
// Default date is current date
function previousUTCHour(h, d = new Date()) {
// Copy d so don't affect original
d = new Date(+d);
return d.setUTCHours(d.getUTCHours() < h ? h - 24 : h, 0, 0, 0);
}
// Example
let d = new Date();
console.log('Currently : ' + d.toISOString());
[1, 7, 11, 18, 23].forEach(
h => console.log('Previous ' + (''+h).padStart(2, '0') +
' ' + new Date(previousUTCHour(h)).toISOString())
);

相关内容

  • 没有找到相关文章

最新更新