java - 对 Java Date 对象进行排序和比较会产生意外结果

标签 java date locale

我有许多 java Date 对象,我试图按日期升序对它们进行排序。

这些是使用英国格式“dd/mm/yy HH:ss”的简单日期格式化程序从 CSV 加载的,并以相同的格式输出,例如

new SimpleDateFormat("dd/mm/yy HH:ss", Locale.ENGLISH);

这可以正常工作。

但是,当我尝试对这些进行排序(通过实现比较器接口(interface))时,这些排序似乎以美国日期格式(mm/dd/yy)不正确。

    public int compare(CSVEntry t, CSVEntry t1) {
        if (t.date.before(t1.date))
            return -1;
        else if (t.date.after(t1.date))
            return 1;
        else
            return 0;
    }

无论我使用什么方法(Date.after() 或 Date.before() 或 Date.compareTo),也无论区域设置如何。

我尝试使用以下方法设置系统默认本地:

Locale.setDefault(Locale.ENGLISH);

没有效果。

有什么想法吗?

最佳答案

"dd/mm/yy HH:ss"

mm 是一小时中的分钟。您可能正在寻找MM(一年中的月份)。

另外,HH:ss?不是 HH:mmHH:mm:ss

关于java - 对 Java Date 对象进行排序和比较会产生意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651626/

相关文章:

java - 提取一年中特定星期几的所有日期 - Java

android - File.separatorChar 是基于操作系统、区域设置还是其他什么?

java - NestedScrollView 中的 fragment

javascript - 为什么 Date.parse 给出不正确的结果?

java - 升级 gradle 时,Flutter 项目无法构建。错误 : Type 'FlutterTask' property 'assets' is missing an input or output annotation

Java正则表达式来验证日期范围

java - JMenuitem加速器如何国际化?

Java : Does Locale affect the Formatter for JFormattedTextField

java - 单个图像按钮用作开始-停止-开始

java - ZuulProxy 未通过以 Brixton.RC1 开头的授权 header