java - 比较Java中的日期字符串

标签 java date

<分区>

所以我正在使用 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 中使用字符串来处理日期并不总是最好的选择。例如,如果是闰年,二月就会多出一天。因为字符串可以看似正确,所以进行转换比较合适。 Java 验证日期是否正确。

您可以使用 SimpleDateFormat 将字符串转换为日期类。

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");
    }
}

要找出允许哪些参数检查Customizing Formats (The Java™ Tutorials > Internationalization > Formatting)

关于java - 比较Java中的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10609596/

相关文章:

java - 默认字段 - Java-JDBC

javascript - jQuery 填充的日期选择器一个月不同步

git - Git 如何解析日期字符串?

api - 为什么 twitter 的自始至终参数不起作用?

javascript - 如何将没有分隔符的字符串转换为日期?

java - java中的碰撞检测?

java - 如何按优先级迭代?

java - 在 JavaFX 中同时处理 KeyEvent 和 MouseEvent

javascript - 组合日期格式变量和函数 (jquery/Javascript)

java - "com.sun.xml.bind.xmlDeclaration=false"和 "jaxb.fragment=true"之间有什么区别?