所以我正在使用dateString1.compareTo(dateString2)
它根据每个字符的 Unicode 值与字符串进行字典顺序比较,并返回一个 int。这是一个代码示例。
String dateString1 = "05-12-2012";
String dateString2 = "05-13-2012";
if (dateString1.compareTo(dateString2) <=0){
System.out.println("dateString1 is an earlier date than dateString2");
}
这是 Java 中比较日期的错误方法吗?
在我的测试中,我没有遇到得到意外结果的情况。如果不需要的话,我真的不想从字符串中创建一个 Date 对象,因为我是在一个长时间运行的循环中执行此操作。
忍者 编辑从下面的答案中可以看出,如果将日期作为字符串进行比较,则没有任何问题yyyyMMdd
格式,但如果是任何其他格式,显然会导致错误。
我的日期字符串实际上是yyyyMMdd
我的实际代码中的格式。 (我在上面给出的示例中输入了错误的格式。)所以现在,我将保留代码不变,并添加几行注释来证明我的决定是正确的。
但我现在发现,像这样比较字符串是非常有限的,如果 dba 决定将来更改日期格式,我将遇到错误,而我没有看到这种情况发生。
在 Java 中使用字符串处理日期并不总是最好的选择。例如,当它是一个leap今年,二月多了一天。因为字符串看起来可能是正确的,所以执行转换。 Java 验证日期是否正确。
您可以使用以下命令将字符串转换为日期简单日期格式 class.
public static void main(String[] args) throws ParseException {
String dateString1 = "05-12-2012";
String dateString2 = "05-13-2012";
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
Date date1 = format.parse(dateString1);
Date date2 = format.parse(dateString2);
if (date1.compareTo(date2) <= 0) {
System.out.println("dateString1 is an earlier date than dateString2");
}
}
找出允许检查哪些参数自定义格式(Java™ 教程 > 国际化 > 格式设置)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)