Java Joda时间是晚于日期的解决方案
我想比较两个日期。 如果当前日期时间大于或晚于 指定日期,则返回“True” 到目前为止,我已经试过了Java Joda时间是晚于日期的解决方案,java,jodatime,Java,Jodatime,我想比较两个日期。 如果当前日期时间大于或晚于 指定日期,则返回“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); //Dea
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日,而现在是25日,所以它应该会回来
“真的”
但我越来越“假”
产值:
dhakaTime.plusday(2)=2017-11-25T14:10:27.762+06:00死线时间=2017-11-25T11:00:00.000+06:00
我是遗漏了什么还是做错了什么?它正确地给出了
false
你在比较
deadLineTime = 2017-11-25T11:00:00.000+06:00 and
dhakaTime(+2) = 2017-11-25T14:10:27.762+06:00
它们都在同一日期,但随着时间的推移,deadLineTime
在11AM但dhakaTime(+2)
在2PM上。所以
(2017年11月25日上午11点)之后(2017年11月25日下午2点)
为false
编辑:测试用例
正如您所提到的,下面使用了不同的测试用例来比较截止日期
与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)));
}
它正确地给出了
false
你在比较
deadLineTime = 2017-11-25T11:00:00.000+06:00 and
dhakaTime(+2) = 2017-11-25T14:10:27.762+06:00
它们都在同一日期,但随着时间的推移,deadLineTime
在11AM但dhakaTime(+2)
在2PM上。所以
(2017年11月25日上午11点)之后(2017年11月25日下午2点)
为false
编辑:测试用例
正如您所提到的,下面使用了不同的测试用例来比较截止日期
与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)));
}
尝试使用DateTimeFormatter withZone(DateTimeZone)方法创建日期时间尝试使用DateTimeFormatter withZone(DateTimeZone)方法创建日期时间打印两个日期并检查其值。您可能会在那里找到解决方案。dhakaTime.plusDays(2)=2017-11-25T14:10:27.762+06:00死线时间=2017-11-25T11:00:00.000+06:00@MadJavaProgrammer我添加了一个答案。打印出这两个日期并检查它们的值。您可能会在那里找到解决方案。dhakaTime.plusDays(2)=2017-11-25T14:10:27.762+06:00死线时间=2017-11-25T11:00:00.000+06:00@MadJavaProgrammer我已经添加了一个答案。为什么要为dhakaTime添加2天?我想我需要这样做:dhakaTime.isAfter(deadlineTime)对吗?如果是为您的测试,我认为它是正确的。因此,您可以为
dhakaTime
添加一天,它将返回true,直到dhakaTime为27-11-2017 10:59:59
。当您添加2天时,时间已经超过了截止日期,应返回false
。如果您这样做,dhakaTime.isAfter(deadlineTime)
,则只有当dhakaTime
大于deadLine
时间时,它才会返回true
。也就是说,只有在超过死线时间后才进行检查。为什么要为dhakaTime添加2天?我想我需要这样做:dhakaTime.isAfter(死线时间)对吗?如果是针对您的测试,我认为它是正确的。因此,您可以为dhakaTime
添加一天,它将返回true,直到dhakaTime为27-11-2017 10:59:59
。当您添加2天时,时间已经超过了截止日期,应返回false
。如果您这样做,dhakaTime.isAfter(deadlineTime)
,则只有当dhakaTime
大于deadLine
时间时,它才会返回true
。也就是说,只有在超过死线时间时才进行检查。