如何在java中比较格式"EEE MMM dd HH:mm:ss zzz yyyy"和"yyyy-MM-dd hh:mm:sss"的日期时间?
How to compare the datetime of format "EEE MMM dd HH:mm:ss zzz yyyy" and "yyyy-MM-dd hh:mm:sss" in java?
我的日期类型为 "EEE MM DD HH:mm:ss zzz yyyy"(3 月 4 日星期三 03:34:45 GMT+08:00 2020)和 "yyyy-MM-dd hh:mm:ss" (2020-02-04 02:10:58)。如何比较 java 中的这两个日期?
两个日期都在同一时区。
首先这两个日期不可比较,因为第二个日期缺少时区。
其次,如果您仍想使用系统的默认时区执行此操作,则需要将两个日期都转换为通用格式。
将日期解析为 Date
对象,然后您就可以玩弄它了:
DateFormat dateFormat1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
Date date1 = dateFormat1.parse("Wed Mar 04 03:34:45 GMT+08:00 2020");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date2 = dateFormat2.parse("2020-02-04 02:10:58");
System.out.println(date1.after(date2));
如果您假设第二个日期的时区与第一个日期的时区相同,那么您可以只使用 java.time。它具有您需要的所有解析工具。任何其他固定时区也适用。
这是一个例子:
String a = "Wed Mar 04 03:34:45 GMT+08:00 2020";
String b = "2020-02-04 02:10:58";
ZonedDateTime parsedA;
ZonedDateTime parsedB;
DateTimeFormatter formatterA = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy");
parsedA = ZonedDateTime.parse(a, formatterA);
DateTimeFormatter formatterB = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
parsedB = LocalDateTime.parse(b, formatterB).atZone(parsedA.getZone());
// What do you want to compare? For example you can tell if a is after b.
System.out.println(parsedA.isAfter(parsedB));
看看 here 如果您需要另一种格式并且需要 图案字母和符号 .
的列表
我的日期类型为 "EEE MM DD HH:mm:ss zzz yyyy"(3 月 4 日星期三 03:34:45 GMT+08:00 2020)和 "yyyy-MM-dd hh:mm:ss" (2020-02-04 02:10:58)。如何比较 java 中的这两个日期?
两个日期都在同一时区。
首先这两个日期不可比较,因为第二个日期缺少时区。
其次,如果您仍想使用系统的默认时区执行此操作,则需要将两个日期都转换为通用格式。
将日期解析为 Date
对象,然后您就可以玩弄它了:
DateFormat dateFormat1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
Date date1 = dateFormat1.parse("Wed Mar 04 03:34:45 GMT+08:00 2020");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date2 = dateFormat2.parse("2020-02-04 02:10:58");
System.out.println(date1.after(date2));
如果您假设第二个日期的时区与第一个日期的时区相同,那么您可以只使用 java.time。它具有您需要的所有解析工具。任何其他固定时区也适用。
这是一个例子:
String a = "Wed Mar 04 03:34:45 GMT+08:00 2020";
String b = "2020-02-04 02:10:58";
ZonedDateTime parsedA;
ZonedDateTime parsedB;
DateTimeFormatter formatterA = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy");
parsedA = ZonedDateTime.parse(a, formatterA);
DateTimeFormatter formatterB = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
parsedB = LocalDateTime.parse(b, formatterB).atZone(parsedA.getZone());
// What do you want to compare? For example you can tell if a is after b.
System.out.println(parsedA.isAfter(parsedB));
看看 here 如果您需要另一种格式并且需要 图案字母和符号 .
的列表