我有很大的问题没有时间获取日期,我想将时间设置为00:00所以我可以检查日期差异。
我到目前为止尝试的步骤:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date now = new Date();
try {
now = dateFormat.parse(dateFormat.format(now));
} catch (ParseException e1) {
//
}
这段代码仍然花时间,我在这里提出了这个类似的代码How do I get a Date without time in Java?由Shobbi回答
之前我的结果比较好,但时间仍然是01:00。 谁对我有更好的解决方案? 我需要将SQLite数据库中的日期与实际日期进行比较。
请记住,CN1 Datelibs基于JDK1.3,因此我使用方法限制
答案 0 :(得分:2)
为什么不使用字符串?如果您使用格式yyyy-MM-dd
,String.compareTo(otherDateString)
应该告诉您这两个日期是如何相关的(一天之前,之后或同一天)
例如:
String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
//get the other date into a string
boolean isInThePast = (today.compareTo(otherDateString) > 0);
答案 1 :(得分:2)
您可以在不考虑小时,分钟,秒和毫秒的情况下比较此类日期:
end_date
<强>测试强>
public static int daysBetweenNowAndDate(String date, String format) {
try {
DateFormat dateFormat = new SimpleDateFormat(format); //Change format to your incoming date string format
Calendar now = Calendar.getInstance();
now.set(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DATE), 0, 0, 0);
now.set(Calendar.MILLISECOND, 0);
Calendar otherDate = Calendar.getInstance();
otherDate.setTime(dateFormat.parse(date));
otherDate.set(otherDate.get(Calendar.YEAR), otherDate.get(Calendar.MONTH), otherDate.get(Calendar.DATE), 0, 0, 0);
otherDate.set(Calendar.MILLISECOND, 0);
long divisor = 86400000; // 24 hours (24 * 60 * 60 * 1000)
long num = now.getTime().getTime() - otherDate.getTime().getTime();
return (int) ((num + divisor - 1) / divisor);
} catch (ParseException ex) {
return -999999;
}
}
答案 2 :(得分:1)
在几个建议之后找到了答案,感谢大家
Calendar now = Calendar.getInstance();
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
now.getTime();
这里重要的是采用导入java.util.Calendar
而不是com.codename1.ui.Calendar
。
还有一点我的错误,在这种情况下,我使用了日历并因使用错误导入而感到困惑:\
答案 3 :(得分:-1)
尝试使用可以解决问题的Joda时间库