2013-02-20 45 views
0

我想使用喬達時間庫來幫助我安排發送一些消息給阿卡的演員。計算秒數,直到在約達時間的給定日期和時間

我想安排每天上午8:30發送電子郵件。爲此,我必須告訴調度程序需要等待多少秒(或幾毫秒),直到發送下一條消息。

我想解釋夏令時(爲了確保它總是在8:30左右開火,而不是7:30或9:30),所以我將使用LocalDateLocalTime

所以,基本上,我有:

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

rightNow = LocalDateTime.now()

我想知道什麼是基於targetDatetargetTime所以targetDateTime組成的最佳方式我可以用它來計算時差rightNow

我知道我可以創建一個新的LocalDateTime從我的targetDatetargetTime中提取構造函數的所有值,但有沒有更優雅的方法?

回答

0

到目前爲止,我已經解決了:

targetDateTime = targetDate.toLocalDateTime(targetTime)

secondsToWait = Seconds.secondsBetween(rightNow, targetDateTime)

+2

您可能感興趣的[scala-time](https://github.com/jorgeortiz85/scala-time) – EECOLOR 2013-02-20 22:09:04

0

獲得targetDateTime很容易,如果你有targetDatetargetTime(在你的問題中給出):

targetDateTime = targetDate.toDateTime(targetTime); 

從現在開始到現在爲止,獲取Duration的秒數targetDateTime

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

,因爲它假定每秒的方法被稱爲標準秒爲1000毫秒的第二標準。正如其javadoc所說,目前所有的Chronics都只有標準的秒數。

但你也可以簡單地使用毫秒(無需轉換假設):

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

聲明:我剛剛看到這是一個Scala的問題,所以你可能必須更正任何語法差異,因爲我不熟悉scala。