0

我正在尝试使用 Joda Time 库来帮助我安排向 Akka 中的 Actor 发送一些消息。

我想安排每天早上 8:30 发送电子邮件。为此,我必须告诉调度程序要等待多少秒(或毫秒),直到发送下一条消息。

我想考虑夏令时(以确保它总是在 8:30 左右触发,而不是 7:30 或 9:30)所以我将使用LocalDateand LocalTime

所以,基本上,我有:

targetDate = LocalDate.now().plusDays(1)targetTime = new LocalTime(8, 30)

rightNow = LocalDateTime.now()

我想知道什么是构成targetDateTime基于的最佳方法targetDatetargetTime所以我可以用它来计算时间差rightNow

我知道我可以创建一个新LocalDateTime的,从中提取构造函数的所有值,targetDate但是targetTime:有没有更优雅的方法?

4

2 回答 2

0

到目前为止,我已经解决了:

targetDateTime = targetDate.toLocalDateTime(targetTime)

secondsToWait = Seconds.secondsBetween(rightNow, targetDateTime)

于 2013-02-20T20:22:19.497 回答
0

targetDate如果您有and targetTime(如您的问题中给出的),则获取 targetDateTime 很容易:

targetDateTime = targetDate.toDateTime(targetTime);

获取Duration现在和之间的秒数targetDateTime

new Duration(new DateTime(), targetDateTime).getStandardSeconds();

该方法被称为标准秒,因为它假定每秒是 1000 毫秒的标准秒。正如其 javadoc 所说,目前所有年表只有标准秒。

但是您也可以简单地使用毫秒(不需要转换假设):

new Duration(new DateTime(), targetDateTime).getMillis();

免责声明:我只是看到这是一个 scala 问题,因此您可能必须纠正任何语法差异,因为我不精通 scala。

于 2013-02-21T06:36:35.817 回答