用户输入的日期分别为日,月和年使用下拉列表。我必须将用户输入的日期与今天的日期进行比较,并检查它是在同一天还是将来的某一天。我对时间部分有点困惑,因为我对时间不感兴趣,只对日期感兴趣。如何在不使用Date类的情况下解决这个问题(我不建议使用Date类)。
感谢。
答案 0 :(得分:7)
首先需要创建表示输入日期的GregorianCalendar
实例:
Calendar user = new GregorianCalendar(2012, Calendar.MAY, 17);
一个用于“现在”:
Calendar now = new GregorianCalendar();
如果日期是未来,这将产生正值,如果是过去,则产生负值:
user.compareTo(now);
关于构建user
对象的几点注释:
答案 1 :(得分:2)
尝试使用库Apache Commons Lang的类DateUtils。
此类提供truncatedEquals方法(cal1,cal2,field)。
所以你可以用一行代码检查是否相等:
Calendar user = new GregorianCalendar(2012, Calendar.MAY, 17);
Calendar now = Calendar.getInstance();
if(DateUtils.truncatedEquals(user, now, Calendar.DATE)){
// your code goes here
}
答案 2 :(得分:1)
简单计算:
$('.modal').css('min-height', height);
- > 2
答案 3 :(得分:0)
试试这个解决方案:
int day = 0; //user provided
int month = 0; //user provided
int year = 0; //user provided
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONDAY, month);
calendar.set(Calendar.DAY_OF_MONTH, day);
long millisUser = calendar.getTime().getTime();
long nowMillis = System.currentTimeMillis();
if(nowMillis < millisUser) {
...
}
以上是检查日期是否在将来。
使用java.util.Date
没有错
您可以使用:
int day = 0; //user provided
int month = 0; //user provided
int year = 0; //user provided
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONDAY, month);
calendar.set(Calendar.DAY_OF_MONTH, day);
Date userSubmit = calendar.getTime();
Date now = new Date();
if(userSubmit.after(now)) {
...
}
但是如果您想要使用日期的流畅,简单和直观的API,我建议使用JodaTime
答案 4 :(得分:0)
使用格里高利历。 如果您想知道两个日期之间的天数差异,那么您可以使用类似于以下的方法。
public int getDays(GregorianCalendar g1, GregorianCalendar g2) {
int elapsed = 0;
GregorianCalendar gc1, gc2;
if (g2.after(g1)) {
gc2 = (GregorianCalendar) g2.clone();
gc1 = (GregorianCalendar) g1.clone();
}
else {
gc2 = (GregorianCalendar) g1.clone();
gc1 = (GregorianCalendar) g2.clone();
}
gc1.clear(Calendar.MILLISECOND);
gc1.clear(Calendar.SECOND);
gc1.clear(Calendar.MINUTE);
gc1.clear(Calendar.HOUR_OF_DAY);
gc2.clear(Calendar.MILLISECOND);
gc2.clear(Calendar.SECOND);
gc2.clear(Calendar.MINUTE);
gc2.clear(Calendar.HOUR_OF_DAY);
while ( gc1.before(gc2) ) {
gc1.add(Calendar.DATE, 1);
elapsed++;
}
return elapsed;
}
这会让你得到天数的差异。