日历比较不起作用

时间:2011-01-14 07:09:24

标签: java

我已经编写了这段代码并且无法正常工作......

indate =“13/1/2011”

Calendar cd1 = Calendar.getInstance();
        String[] StartDate = split(inDate.trim(),"/");
        cd1.set(Calendar.DAY_OF_MONTH, Integer.parseInt(StartDate[0]));
        cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1]));
        cd1.set(Calendar.YEAR, Integer.parseInt(StartDate[2]));

currentDate ="14/1/2011"
        String CurrentDate = com.connection.loginscreen.currentDate;
        Calendar cd2 = Calendar.getInstance();
        String[] resultc = split(CurrentDate.trim(), "/");
        cd2.set(Calendar.YEAR, Integer.parseInt(resultc[2]));
        cd2.set(Calendar.MONTH, Integer.parseInt(resultc[0]));
        cd2.set(Calendar.DAY_OF_MONTH, Integer.parseInt(resultc[1]));

        if (cd1.before(cd2))
        {
            check ="1";
        }

它不起作用.....

2 个答案:

答案 0 :(得分:3)

这几乎肯定不是你想要的:

cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1]));

Calendar.MONTH从零开始......而人类通常以1种方式读/写月份。

除了细节之外,你真的不应该自己编写解析代码,除非你有一个特别奇怪的格式,这是由图书馆处理的。如果您真的想坚持使用Java库,请使用SimpleDateFormat来解析它。自己进行解析会导致上面的错误和jk指出的错误。这就像从字符串手工构建XML:不要这样做 - 使用库

就个人而言,我建议在Java中使用Joda Time进行所有日期/时间工作。这是一个更好的API。

答案 1 :(得分:1)

不要自己解析。要将String转换为Date,请使用DateFormat,如下所示:

    DateFormat f = new SimpleDateFormat("dd/M/yyyy");   
    String indate = "13/1/2011";
    Date cd1 = f.parse(indate);
    String currentDate ="1/14/2011";
    DateFormat f2 = new SimpleDateFormat("M/dd/yyyy");
    Date cd2 = f2.parse(currentDate);
    if (cd1.before(cd2))
    {
        check ="1";
    }

检查SimpleDateFormat javadocs以查看定义的模式及其使用方式。