Java日期比较失败
即使日期相等或不相等,比较失败。它只是打印1 CompareTo在比较时不返回0 这愚蠢的代码挤压我的头。嘿,朋友们,我在哪里犯规了Java日期比较失败,java,date,compareto,Java,Date,Compareto,即使日期相等或不相等,比较失败。它只是打印1 CompareTo在比较时不返回0 这愚蠢的代码挤压我的头。嘿,朋友们,我在哪里犯规了 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class date { public static void main (String args[]) thr
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class date {
public static void main (String args[]) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date expiry = sdf.parse("2012-11-09");
System.out.println(sdf.format(expiry));
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(expiry);
cal1.add(Calendar.DATE, -2);
System.out.println(sdf.format(cal1.getTime()));
System.out.println(sdf.format(cal2.getTime()));
int j = cal1.compareTo(cal2);
System.out.println("The result is :" + j);
}
}
比较
说出了真相。您刚刚从输出中隐藏了小时、分钟、秒和毫秒
expiration
日期设置为00:00:00.0000
(当天的第一毫秒),而cal2
仍然携带实际时间。比较
告诉我们真相。您刚刚从输出中隐藏了小时、分钟、秒和毫秒
expiration
日期设置为00:00:00.0000
(该天的第一毫秒),而cal2
仍然携带实际时间。比较
是函数为您提供的解决方案。。。
你可以看看这里
比较
是该函数为您提供的解决方案。。。
你可以看看这里
Compare可比较由两个日历对象表示的时间值(与历元的毫秒偏移量)。如果使用格式化打印cal1和cal2,您将看到时间差
System.out.println(cal1.getTime());
System.out.println(cal2.getTime());
这将显示两个日历实例的精确时间。compare比较由两个日历对象表示的时间值(与历元的毫秒偏移量)。如果使用格式化打印cal1和cal2,您将看到时间差
System.out.println(cal1.getTime());
System.out.println(cal2.getTime());
这将显示两个日历实例的精确计时。您从未设置
cal2
。您的代码打印以下内容:2012-11-09 2012-11-07 2012-11-07结果是:-1
Calendar cal2=Calendar.getInstance();这足够让你today@Tichodroma我得到了cal1和cal2的sop。我建议你试试Joda Time,因为它有像LocalDate这样的类来处理日期,而不用担心时间。感谢我解决了所有问题。你从未设置cal2
。您的代码打印以下内容:2012-11-09 2012-11-07 2012-11-07结果是:-1
Calendar cal2=Calendar.getInstance();这足够让你today@Tichodroma我得到了cal1和Cal2的sop,我建议你试试Joda Time,因为它有像LocalDate这样的类来处理日期,而不用担心时间。感谢我解决了所有问题。我同意。尽量避免在println调用中使用dateformatter,你会看到Adreas是怎么说的。我不需要毫秒。我的simpleDateFormat不起作用吗?当然,它适用于cal1
,但您不能将其用于cal2
。所以你把一天和一个时间戳进行比较,时间戳的值(几乎)总是会更高(如果天数相等),我同意。尽量避免在println调用中使用dateformatter,你会看到Adreas是怎么说的。我不需要毫秒。我的simpleDateFormat不起作用吗?当然,它适用于cal1
,但您不能将其用于cal2
。因此,将一天与时间戳进行比较,时间戳的值(几乎)总是更高(如果天数相等)