| | |
| | | import java.text.DateFormat; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.Instant; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneOffset; |
| | | import java.time.ZonedDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.time.format.DateTimeParseException; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.GregorianCalendar; |
| | |
| | | * @return |
| | | */ |
| | | public static String zone2Str(String st) { |
| | | // 解析字符串为ZonedDateTime对象 |
| | | ZonedDateTime zonedDateTime = ZonedDateTime.parse(st); |
| | | // 转换为中国标准时间(UTC+8) |
| | | ZonedDateTime cstDateTime = zonedDateTime.withZoneSameInstant(java.time.ZoneOffset.ofHours(8)); |
| | | // 定义想要的输出格式 |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | // 格式化为想要的字符串 |
| | | String str = cstDateTime.format(formatter); |
| | | return str; |
| | | try { |
| | | // 尝试解析为时间戳(数字) |
| | | if (st.matches("^\\d+$")) { |
| | | long timestamp = Long.parseLong(st); |
| | | // 假设时间戳是秒级,如果是毫秒级则不需要 *1000 |
| | | Instant instant = Instant.ofEpochSecond(timestamp); |
| | | return instant.atZone(ZoneOffset.ofHours(8)) |
| | | .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | } |
| | | |
| | | // 尝试解析为常规日期时间格式 |
| | | try { |
| | | LocalDateTime localDateTime = LocalDateTime.parse(st, |
| | | DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | return localDateTime.atZone(ZoneOffset.ofHours(8)) |
| | | .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | } catch (DateTimeParseException e) { |
| | | // 不是常规格式,继续尝试ZonedDateTime的默认格式 |
| | | } |
| | | |
| | | // 尝试解析为ZonedDateTime的默认格式 |
| | | ZonedDateTime zonedDateTime = ZonedDateTime.parse(st); |
| | | return zonedDateTime.withZoneSameInstant(ZoneOffset.ofHours(8)) |
| | | .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |