scala - 如何在给定 ZonedDateTime 的情况下计算下一分钟和接下来 5 分钟的间隔
问题描述
我有一个 ZonedDatetime 的实例。
ZonedDateTime.now(ZoneId.of("America/New_York"))
我基本上需要一个函数来获取 ZonedDateTime 的实例并返回接下来的 1 分钟和 5 分钟的值。
所以如果当前时间是:
2021-10-24T19:46:10.649817
下一分钟将是19:47:00
,接下来的 5 分钟将是19:50:00
接下来的 5 分钟间隔总是这样:
1:00
1:05
1:10
1:15
1:20
1:25
...
1:50
1:55
2:00
即下一个 5 分钟间隔不是基于从现在开始的正好 5 分钟,而是基于从一个小时的开始开始的下一个 5 分钟。未来的下一个 1 分钟间隔也是如此。
def nextIntervals(zdt: ZonedDateTime): (ZonedDateTime, ZonedDateTime) = {
???
}
解决方案
这样做相当简单,无需对值进行硬编码。不幸的是,我对 scala 不熟悉,所以我会给你一些伪代码,我相信你可以轻松翻译它。
nextIntervals(zdt) {
timestamp = zdt.toUnixTimestamp();
return [
new ZonedDateTime(timestamp + (60 - timestamp % 60)),
new ZonedDateTime(timestamp + (300 - timestamp % 300))
]
}
上面的代码假设ZonedDateTime
可以通过给它一个 unix 时间戳来实例化,以秒为单位。而且它还可以转换为 unix 时间戳。
这个想法很简单:模数的其余部分将是自上次所需时间段以来经过的时间(在您的情况下为 1 分钟或 5 分钟)。把它从这个时期本身拿走,你就有了留到下一个时期的时间。将其添加到当前时间,您就有了确切的日期时间。
编辑:
这是一个有效的javascript示例
function nextIntervals(date) {
let t = date.getTime();
return [
60e3,
300e3,
].map(i => new Date(t + i - t % i));
}
console.log(nextIntervals(new Date));
推荐阅读
- javascript - 无法创建子类的对象 - TypeError: HomePage_1.HomePage 不是构造函数
- html - 如何在刀片中显示带有数据库变量的 html
- botframework - 发送活动失败:机器人返回错误 502 404
- python - 使用请求时得到 404,但 curl 工作正常
- python-appium - 在 PyCharm 调试器中停止程序时如何终止 Appium 会话
- c# - 使用序列化将 XML 属性或元素添加到集合元素
- oracle - 我必须做什么才能在 Oracle 18c EE 中启用 DML 复制?
- javascript - 在移动到下一行之前等待函数返回
- android - AppLock 的服务工作奇怪
- python - MultiValueDictKeyError:“内容”