我想比较两个日期。 如果当前日期时间较长或之后 具体日期,然后它将返回' True'。
到目前为止,我已经尝试过了。
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
截止时间= 2017-11-25T11:00:00.000 + 06:00
我错过了什么或做错了什么?
答案 0 :(得分:3)
它正确地提供了false
。
您正在比较
deadLineTime = 2017-11-25T11:00:00.000+06:00 and
dhakaTime(+2) = 2017-11-25T14:10:27.762+06:00
它们都处于同一日期,但随着时间的推移,deadLineTime
位于上午11点,dhakaTime(+2)
位于 2PM 。所以,
(Nov 25, 2017 11AM)isAfter(Nov 25, 2017 2PM)
是false
。
编辑:测试用途
正如您提到的那样,以下使用了不同的测试用例来比较deadLine
和dhakaTime
(+1和+2天)。我希望这可以让你了解它是如何工作的。
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)));
}
答案 1 :(得分:0)
尝试使用DateTimeFormatter withZone(DateTimeZone区域)方法并使用它创建DateTime