Java 日历比较不起作用
我写了这段代码,但它不起作用 indate=“13/1/2011”Java 日历比较不起作用,java,Java,我写了这段代码,但它不起作用 indate=“13/1/2011” 它不起作用….这几乎肯定不是您想要的: cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1])); Calendar.MONTH是以零为基础的。。。而人类通常以1为基础的方式读/写数月 不过,撇开细节不谈,你真的不应该自己编写解析代码,除非你有一种特别奇怪的格式,而这种格式不是由库来处理的。如果您真的想继续使用Java库,请使用SimpleDataFormat对其进行解析。
它不起作用….这几乎肯定不是您想要的:
cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1]));
Calendar.MONTH
是以零为基础的。。。而人类通常以1为基础的方式读/写数月
不过,撇开细节不谈,你真的不应该自己编写解析代码,除非你有一种特别奇怪的格式,而这种格式不是由库来处理的。如果您真的想继续使用Java库,请使用SimpleDataFormat
对其进行解析。自己做语法分析会导致上面的错误和jk指出的错误。这就像从字符串手工构建XML:不要这样做——使用库
但就我个人而言,我建议在Java中使用所有日期/时间工作。这是一个更好的API。这几乎肯定不是您想要的:
cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1]));
Calendar.MONTH
是以零为基础的。。。而人类通常以1为基础的方式读/写数月
不过,撇开细节不谈,你真的不应该自己编写解析代码,除非你有一种特别奇怪的格式,而这种格式不是由库来处理的。如果您真的想继续使用Java库,请使用SimpleDataFormat
对其进行解析。自己做语法分析会导致上面的错误和jk指出的错误。这就像从字符串手工构建XML:不要这样做——使用库
但就我个人而言,我建议在Java中使用所有日期/时间工作。这是一个更好的API。不要自己解析。要将字符串转换为日期,请使用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";
}
检查以查看定义了哪些模式以及如何使用它。不要自己进行解析。要将字符串转换为日期,请使用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";
}
检查以查看定义了哪些模式以及如何使用它。抱歉,当前日期是2011年1月14日。请尝试通过执行
System.out.println(新的SimpleDataFormat(“yyyy/MM/dd HH:MM:ss”).format(cd1.getTime())调试它
查看每个日历值是否正确解析。抱歉,当前日期是2011年1月14日。请尝试通过执行System.out.println(新SimpleDataFormat(“yyy/MM/dd HH:MM:ss”).format(cd1.getTime())调试它
查看每个日历值的解析是否正确。@keuleJ:我也是。这只是使用Joda Time的众多原因之一。@keuleJ:我也是。这只是使用Joda Time的众多原因之一。