0

Joda Timeライブラリを使用して、Akkaのアクターにメッセージを送信するスケジュールを立てようとしています。

毎日午前8時30分にメールを送信するようにスケジュールしたいと思います。これを行うには、次のメッセージが送信されるまで待機する秒数(またはミリ秒)をスケジューラーに通知する必要があります。

夏時間を考慮したいので(7:30や9:30ではなく、常に8:30頃に発火するようにするため)、とを使用LocalDateLocalTimeます。

だから、基本的に、私は持っています:

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

targetDateand 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 に答える