我必须将用户输入的日期与当前日期&时间。为此,我使用下面的代码。
dateTimeString = onDate.concat(" ").concat(onTime);
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
dateObject = simpleDateFormat.parse(dateTimeString);
if (new Date().after(dateObject)) {
dateObject.setYear(new Date().getYear());
dateTimeString = simpleDateFormat.format(dateObject);
dateObject = simpleDateFormat.parse(dateTimeString);
if (new Date().after(dateObject)) {
dateObject.setYear(new Date().getYear() + 1);
dateObjectString = simpleDateFormat.format(dateObject);
}
else {
dateObjectString = simpleDateFormat.format(dateObject);
}
}
else {
dateObjectString = simpleDateFormat.format(dateObject);
}
}
catch (ParseException e) {
e.printStackTrace();
}
上述代码中的if块每次都对dateTimeString的任何值执行。但是我希望它们只在输入的日期在当前日期之前执行。 有人请告知我做错了什么。我也试过其他一些方法,但没有取得任何成功。此外,当我将字符串日期解析为Date对象时,它将一天中的小时转换为00。
答案 0 :(得分:1)
试试这个,
public static Date getRemainderDate(String onDate, String onTime) throws ParseException {
String dateTimeString = onDate.concat(" ").concat(onTime);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
Date dateObject = simpleDateFormat.parse(dateTimeString);
Date curDate=new Date();
if (curDate.after(dateObject)) {
dateObject.setYear(curDate.getYear());
if(curDate.after(dateObject)){
dateObject.setYear(curDate.getYear()+1);
return dateObject;
}else{
return dateObject;
}
}
else {
return dateObject;
}
}
catch (ParseException e) {
e.printStackTrace();
}
return null;
}