java - 尝试编写将在第二天开始的代码
问题描述
我正在尝试编写代码以在凌晨 1 点运行。这个想法是以毫秒为单位找到第二天的时间量,然后在那个时间睡觉我这样做是通过将当前时间的提醒除以天数来实现的。
remainder= current time % 8640000
当前时间从Time.getTimeInMillis();
我得到 61175831
得到天数除以 (60 60 24)
女巫给了我 16 小时
现在是下午 1 点,所以 13+16=30 或第二天早上 6 点,而不是早上 1 点
delayTime=24*60*60*1000; // i day
Calendar Time = Calendar.getInstance();
long delay=TimeToNumber%delayTime;
ling days=delay/1000;
days=days/60;
days=days/60
16天了
解决方案
在不了解您的使用场景的情况下,我无法真正评论您建议的方法是否是进行实际调度的最佳方式。但是,我可以回答如何确定直到凌晨 1:00 的毫秒数的问题。
ZonedDateTime now = ZonedDateTime.now();
LocalTime targetTime = LocalTime.parse("01:00");
ZonedDateTime targetDateTime;
if (now.toLocalTime().isBefore(targetTime)) {
targetDateTime = now.with(targetTime);
} else {
targetDateTime = now.plusDays(1).with(targetTime);
}
long millis = Duration.between(now, targetDateTime).toMillis();
解释
日历API 是一个遗留 API ,使用它时会遇到很多挑战和陷阱。此外,通过尝试自己进行数学计算,您会错过库自动为您处理的各种细微差别(例如夏令时转换等)。由于这些原因,我强烈建议使用较新的java.time API。
对于这个特定问题,您需要确定下一个凌晨 1:00 之前的毫秒数。如果时间在当前日期的 1:00 之前,您希望返回当前日期的 1:00。如果是 1:00 之后,您想在明天的 1:00 返回。
ZonedDateTime
表示今天/明天的 1:00 是一个不错的选择,因为除了日期和时间之外,还需要一个时区来将日期时间与特定时刻相关联。
检索下一个 1:00 可以通过将当前LocalTime
与LocalTime
1:00 AM 的 a 进行比较来实现:
ZonedDateTime now = ZonedDateTime.now();
LocalTime targetTime = LocalTime.parse("01:00");
ZonedDateTime targetDateTime;
if (now.toLocalTime().isBefore(targetTime)) {
targetDateTime = now.with(targetTime);
} else {
targetDateTime = now.plusDays(1).with(targetTime);
}
这是假设您使用系统默认时区。如果您想使用不同的时区,可以在调用中指定ZonedDateTime.now()
:
ZonedDateTime now = ZonedDateTime.now(ZoneId.of("America/New_York"));
这ZonedDateTime
代表下一个凌晨 1:00,您可以Duration
在当前时间和那个时间之间使用 a,然后获取持续时间的毫秒数:
long millis = Duration.between(now, targetDateTime).toMillis();
推荐阅读
- python - 精灵是否有可能对特定颜色做出反应
- parsing - 如何在不知道格式的情况下读取任何 STL ASCII 格式的文件?
- r - 如何根据列匹配有效地将这些 imdb 电影标题 ID 替换为实际标题?
- python - 根据单个单元格中的多个值对熊猫数据框进行排序
- java - 如何在 RCON 中读取服务器上的聊天记录
- python - Python aiohttp电机引擎
- json - SOAPUI:使用 groovy 运行测试步骤而不修改测试步骤主体
- amazon-web-services - aws elasticbeanstalk意外错误0000000001?
- python - 在 Numpy 中,如何根据元素的绝对值的最大值来选择元素?
- vue.js - UI 框架的“单个组件导入”实践是否使 Vue js 应用程序性能更好?