2013-02-20 6 views
0

Я пытаюсь использовать библиотеку времени Joda, чтобы помочь мне рассылать некоторые сообщения Актеру в Акке.Расчет секунд до заданной даты и времени в Joda Time

Я хотел бы запланировать отправку писем каждый день в 8:30. Чтобы сделать это, я должен сообщить планировщику, сколько секунд (или миллисекунд) ждать, пока не будет отправлено следующее сообщение.

Я хотел бы рассчитать переход на летнее время (чтобы он всегда срабатывал около 8:30, а не 7:30 или 9:30), поэтому я буду использовать LocalDate и LocalTime.

Так, в принципе, у меня есть:

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

и

rightNow = LocalDateTime.now()

Мне было интересно, что это лучший способ, чтобы сочинить targetDateTime на основе targetDate и targetTime так Я могу использовать его для вычисления разницы во времени с rightNow

Я знаю, что могу создать новый LocalDateTime, извлекая все значения для конструктора из моих targetDate и targetTime, но: есть ли более элегантный способ?

ответ

0

До сих пор, я довольствовалась:

targetDateTime = targetDate.toLocalDateTime(targetTime)

secondsToWait = Seconds.secondsBetween(rightNow, targetDateTime)

+2

Возможно, вас заинтересует [scala-time] (https://github.com/jorgeortiz85/scala-time) – EECOLOR

0

Получение targetDateTime легко, если у вас есть targetDate и targetTime (как указано в вашем вопросе):

targetDateTime = targetDate.toDateTime(targetTime); 

Получение секунд Duration между targetDateTime:

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

Метод называется стандартными секунды, поскольку он предполагает каждую секунду, чтобы быть стандартной вторыми 1000 миллисекунд. Как говорит его javadoc, в настоящее время все хронологии имеют только стандартные секунды.

Но вы также можете просто использовать миллисекунды (без допущений преобразования требуется):

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

Отказ от ответственности: я только видел, что это было Скала вопрос, так что вы, возможно, придется исправлять любые синтаксические различия, так как Я не разбираюсь в scala.

Смежные вопросы