0

さて、私はこの状況で何をすべきかを理解するのに苦労しています. 特定のアクションが実行された日付を取得する現在の日付が指定されているため、終了日を指定する必要があるため、メソッドはいつ処理を終了するかを知ることができます。

public void process() {
    currentDate = getCurrentDate();

    String dateStart = lotteryStart;
    String dateStop = getCurrentDate().toString();

    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm");

Date d1 = null;
Date d2 = null;

try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);

    DateTime dt1 = new DateTime(d1);
    //DateTime dt2 = dt1.plusMinutes(10);
    DateTime dt2 = new DateTime(d2);
    sendMessage(Integer.toString(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60));
    if (dt2 == dt1.plusMinutes(1)) {
    //sendMessage(Integer.toString(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60));
    //if (Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 == 500) {
        durationReached = true;
    }

    } catch (Exception e) { e.printStackTrace(); }

}

終了日を開始日の前の特定の時間にするにはどうすればよいですか? たとえば、開始日が 2013 年 6 月 10 日 23:02 の場合、終了日は 2013 年 6 月 10 日 23:05 になります。

完全無視です

if (dt2 == dt1.plusMinutes(1)) {

時間が増えていることを除いて。

この終了日を設定する方法がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

0

1) DateTimeは不変であるため、使用してdt1.plusMinutes(1)もインスタンスdt1は変更されません。
の新しいインスタンスDateTimeが作成されます。したがって、新しいインスタンスを に割り当てる必要がありますdt1

DateTime dt1 = new DateTime(d1).plusMinutes(1);
DateTime dt2 = new DateTime(d2); 

2)日付を と比較しないでください。代わりに ==次を使用してください。Object::equals(Object)

if (dt2.equals(dt1)) {

編集and を使用せずに、DateTimeFormatterDateTimeFormat
を使用 して解析する簡単な方法があります。 DateTimejava.util.DateSimpleDateFormat

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm");
DateTime dt1 = dtf.parse(dateAsString);
于 2013-10-07T06:31:41.853 に答える