2017-11-23 17 views
0

私は2つの日付を比較したいと思います。 現在の日付時刻が の特定日付より大きい場合、またはそれが「True」を返します。Java Joda時間isAfter日付解決

これまで私はこれを試しました。

String deadline = "25/11/2017 11:00:00"; 
DateTime utc = new DateTime(DateTimeZone.UTC); 
DateTimeZone timeZone = DateTimeZone.forID("Asia/Dhaka"); 
DateTime dhakaTime = utc.toDateTime(timeZone); 
//Dead Line Time 
DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); 
DateTime deadlineTime = format.parseDateTime(deadline.trim()); 
//Comapare 
return deadlineTime.isAfter(dhakaTime.plusDays(2)); 

今日は23とdhakaTime.plusDaysであるため(2)それが "真" を返す必要が25になります。

しかし、私は「偽」になっています。

出力値:

dhakaTime.plusDays(2)= 2017-11-25T14:10:27.762 + 06:00
deadlineTime = 2017-11-25T11:00:00.000 + 06:00

何か不足していますか、何か間違っていますか?

+0

に印刷を作成し、その値をチェックするためにそれを使用。そこに解決策が見つかるかもしれません。 –

+0

dhakaTime.plusDays(2)= 2017-11-25T14:10:27.762 + 06:00 deadlineTime = 2017-11-25T11:00:00 + 06:00 –

+0

@MadJavaProgrammer回答を追加しました。 – Sridhar

答えて

3

falseが正しく表示されます。あなたは

deadLineTime = 2017-11-25T11:00:00.000+06:00 and 
dhakaTime(+2) = 2017-11-25T14:10:27.762+06:00 

を比較している

彼らの両方が同じ日にしているが、時間の経過とともに、deadLineTime11AMであるが、dhakaTime(+2)2PMです。したがって、

(Nov 25, 2017 11AM)isAfter(Nov 25, 2017 2PM)falseです。

EDIT:テストケース

あなたはdhakaTime(1、および2日)でdeadLineを比較するために、次のように使用異なるテストケースをテストしている述べたように。これがどのように機能しているか、これがあなたにアイデアを与えることを望みます。

public static void main(String[] args) { 
    String deadline = "25/11/2017 11:00:00"; 
    DateTime utc = new DateTime(DateTimeZone.UTC); 
    DateTimeZone timeZone = DateTimeZone.forID("Asia/Dhaka"); 
    DateTime dhakaTime = utc.toDateTime(timeZone); 
    //Dead Line Time 
    DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); 
    DateTime deadlineTime = format.parseDateTime(deadline.trim()); 

    System.out.println("Deadline : " + deadline); 
    System.out.println("Current datetim : " + dhakaTime); 
    System.out.println("current datetime + 1 day : " + dhakaTime.plusDays(1)); 
    System.out.println("current datetime + 2 day : " + dhakaTime.plusDays(2)); 

    System.out.println("Is deadline after current datetime:" + deadlineTime.isAfter(dhakaTime)); 
    System.out.println("Is deadline after current datetime + 1 day:" + deadlineTime.isAfter(dhakaTime.plusDays(1))); 
    System.out.println("Is deadline after current datetime + 2 day:" + deadlineTime.isAfter(dhakaTime.plusDays(2))); 
} 
+0

それを解決する方法は? –

+0

なぜdhakaTimeに2日間追加していますか?テストのために – Sridhar

+0

、それは働いているかどうか。 –

0

方法てDateTimeFormatter withZone(DateTimeZoneをゾーン)を使用して試してみて、二つの日付からのDateTime

関連する問題