日历比较不工作
问题描述:
我写了这个代码和它不工作......日历比较不工作
铟酸=“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";
}
它不工作... ..
答
不要自己解析。将字符串转换为日期,使用日期格式一个,像这样:
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看到的图案定义了什么以及如何使用它。
答
这是几乎可以肯定不是你想要的东西:
cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1]));
Calendar.MONTH
是从零开始......而人类通常的读/以基于1的方式写月份。
尽管没有详细说明,但你真的不应该自己编写解析代码,除非你有一个奇怪的格式,它不是由库处理的,除非你有一个特别的。如果您确实想要坚持使用Java库,请使用SimpleDateFormat
来解析它。自己解析会导致类似上面的错误和jk指出的错误。这就像是从字符串手工构建XML:不这样做 - 使用库。
个人而言,我建议使用Joda Time在Java中的所有日期/时间工作。这是一个更好的API。
它工作...? – 2011-01-14 07:12:50
抱歉,当前日期为2011年1月14日。 – Sourabh 2011-01-14 07:24:33