public static void batchTransfer() {
Map<String, String> map = new HashMap<>();
map.put("Oct 1, 2022 5:54:31 PM PDT", "2022-10-01 17:54:31");
map.put("2022-12-26 10:06:05", "2022-12-26 10:06:05");
map.put("Jan 1, 2023 6:15:03 p.m. PST", "2023-01-01 18:15:03");
map.put("Jan 1, 2023 6:15:03 a.m. PST", "2023-01-01 06:15:03");
map.put("7 ene 2023 03:33:31 GMT-8", "2023-01-07 03:33:31");
map.put("10/16/2022", "2022-10-16");
map.put("2022-10-17 01:16:13.16928 +00:00", "2022-10-17 01:16:13");
map.put("2022-10-31T14:20:19.000-06:00", "2022-10-31 14:20:19");
map.put("2023-03-16 ( GMT+8 )", "2023-03-16");
map.put("2022-10-27 ( UTC-08:00 )", "2022-10-27");
map.put("2023.03.01", "2023-03-01");
map.put("05/09/2023 12:00 AM", "2023-05-09 00:00:00");
map.put("Nov 7, 2020 4:55:18 PM GMT+0800","2020-11-07 16:55:18");
map.put("Nov 17, 2022 08:00:00 AM (PST)","2022-11-17 08:00:00");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
for (String testDate : map.keySet()) {
LocalDateTime localDateTime = LocalDateUtils.getLocalDateTime(testDate);
String target = null;
if(Objects.nonNull(localDateTime)) {
target = localDateTime.format(dateTimeFormatter);
}else {
LocalDate localDate = LocalDateUtils.getLocalDate(testDate);
if(Objects.nonNull(localDate)) {
DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
target = localDate.format(dateTimeFormatter1);
}
}
if(StringUtils.isBlank(target)) {
System.out.println("false" + "----" +testDate + "---" + "转换失败,无法识别的时间格式");
} else {
System.out.println(StringUtils.equals(map.get(testDate), target) + "----" + testDate + "---" + target);
}
}
}
/**
* 自动匹配解析日期time
*
* @param dateStr 日期字符串
* @return 返回相对应日期
*/
public static LocalDateTime getLocalDateTime(String dateStr) {
dateStr = LocalDateUtils.MoXiGeMonth.replaceMoxiGe(dateStr);
dateStr = dateStr.replaceAll("a.m.", "AM").replaceAll("p.m.", "PM");
dateStr = dateStr.replaceAll("GMT-8", "GMT-0800");
dateStr = dateStr.replaceAll("\\(GMT\\+8\\)", "GMT+0800");
boolean matches = AM_PATTERN_12.matcher(dateStr).find();
if (matches) {
dateStr = dateStr.replace("12:", "00:");
}
for (int i = 0; i < LocalDateUtils.LOCAL_DATE_TIME_FORMATS.length; i++) {
try {
LocalDateTime localDateTime = LocalDateTime.parse(dateStr, LocalDateUtils.LOCAL_DATE_TIME_FORMATS[i]);
return localDateTime;
} catch (Exception e) {
}
}
return null;
}
public final static DateTimeFormatter[] LOCAL_DATE_TIME_FORMATS = {
DateTimeFormatter.ofPattern("yyyy-M-d H:m"),
DateTimeFormatter.ofPattern("yyyy-M-d H:m:s"),
DateTimeFormatter.ofPattern("yyyy/M/d H:m"),
DateTimeFormatter.ofPattern("yyyy/M/d H:m:s"),
DateTimeFormatter.ofPattern("M/d/yyyy H:m:s"),
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSS z"),
DateTimeFormatter.ofPattern("MMM d, yyyy h:mm:ss a z", Locale.ENGLISH),
DateTimeFormatter.ofPattern("MMM d, yyyy h:mm:ss a 'GMT'Z", Locale.ENGLISH),
DateTimeFormatter.ofPattern("MMM d, yyyy h:mm:ss a (z)", Locale.ENGLISH),
DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss 'CST' yyyy", Locale.ENGLISH).withZone(TimeZone.getTimeZone("PDT").toZoneId()),
DateTimeFormatter.ofPattern("d MMM yyyy HH:mm:ss z", Locale.ENGLISH),
DateTimeFormatter.ofPattern("d MMM yyyy HH:mm:ss 'GMT'Z", Locale.ENGLISH),
DateTimeFormatter.ISO_OFFSET_DATE_TIME,
DateTimeFormatter.ofPattern("M/d/yyyy H:m a", Locale.ENGLISH)
};