无法比较不同时区的字符串日期

时间:2020-05-27 17:23:12

标签: java

很抱歉,我的无知,但是我无法比较不同时区中的多个日期(从新到旧)(从较新到较旧)。

我以这种格式从xml服务器获取日期:

示例:

2020年5月27日,星期三20:39:02 +0400

2020年5月27日,星期三19:12:22 +0200

2020年5月27日,星期三15:31:32 GMT

我在Internet上尝试了许多解决方案,但总是出错,谢谢您的帮助

我试图将它们一一比较

public boolean isEarlier(String date1,String date2){
        DateFormat  format = new SimpleDateFormat("EEEE, dd MMMM yyyy kk:mm:ss Z");
        //final SimpleDateFormat formatter = new SimpleDateFormat("EEEE, dd MMMM yyyy kk:mm:ss Z");
        //format.setTimeZone(TimeZone.getTimeZone("UTC"));
        //Date date = formatter.parse(date1);

        Date _date2 = null,_date1 = null;
        try {
             _date1 = format.parse(date1);
            _date2 = format.parse(date2);
        } catch (ParseException e) {
            e.printStackTrace();
        }


        if (_date1.compareTo(_date2) <= 0) {
            return true;
        }
        return false;
    }

但总是错误的结果

1 个答案:

答案 0 :(得分:1)

请参阅DateTimeFormatter类的文档。模式中的某些符号不适合您在问题中张贴的示例字符串。

尝试以下操作:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss xx", Locale.ENGLISH);
ZonedDateTime zdt = ZonedDateTime.parse("Wed, 27 May 2020 20:39:02 +0400", formatter);

星期三是星期中的三个字母,因此EEE
该模式还包含24小时格式的小时,因此HH而非kk
关于月份,MMM表示三个字母的月份,例如 Apr (适用于 April )。如果要使用月份的全名,请添加另一个M,即MMMM