2011-01-14 104 views
0

我写了这个代码和它不工作......日历比较不工作

铟酸=“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"; 
     } 

它不工作... ..

+0

它工作...? – 2011-01-14 07:12:50

+0

抱歉,当前日期为2011年1月14日。 – Sourabh 2011-01-14 07:24:33

回答

1

不要自己解析。将字符串转换为日期,使用日期格式一个,像这样:

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看到的图案定义了什么以及如何使用它。

3

这是几乎可以肯定不是你想要的东西:

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

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

尽管没有详细说明,但你真的不应该自己编写解析代码,除非你有一个奇怪的格式,它不是由库处理的,除非你有一个特别的。如果您确实想要坚持使用Java库,请使用SimpleDateFormat来解析它。自己解析会导致类似上面的错误和jk指出的错误。这就像是从字符串手工构建XML:不这样做 - 使用库

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