我已经编写了这段代码并且无法正常工作......
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";
}
它不起作用.....
答案 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以查看定义的模式及其使用方式。