很抱歉,我的无知,但是我无法比较不同时区中的多个日期(从新到旧)(从较新到较旧)。
我以这种格式从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;
}
但总是错误的结果
答案 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
。