为什么我的日期比较不起作用?

时间:2015-06-25 11:19:05

标签: android datetime

我必须将用户输入的日期与当前日期&时间。为此,我使用下面的代码。

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。

1 个答案:

答案 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;
    }