String format = "yyyy.MM.dd HH:mm:ss";
DateTimeFormatter UNIX = new DateTimeFormatterBuilder()
.appendValue(ChronoField.INSTANT_SECONDS, 1, 10, SignStyle.NEVER)
.toFormatter();
DateTimeFormatter UNIX_MS = new DateTimeFormatterBuilder()
.appendValue(ChronoField.INSTANT_SECONDS, 1, 10, SignStyle.NEVER)
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
Map<String, DateTimeFormatter> dateTimePatternToFormatter = new ConcurrentHashMap<>();
dateTimePatternToFormatter.computeIfAbsent(format, k -> new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern(format).toFormatter());
dateTimePatternToFormatter.put("UNIX", UNIX);
dateTimePatternToFormatter.put("UNIX_MS", UNIX_MS);
//时间戳转日期字符串
long unix = 1635129469;
System.out.println("传入时间戳:" + unix);
long epocTimeInMilis = ((Number) (((Number) unix).doubleValue() * 1000)).longValue();
Instant instant = Instant.ofEpochMilli(epocTimeInMilis);
ZonedDateTime dateTime = ZonedDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
String format3 = dateTime.format(dateTimePatternToFormatter.get(format));
System.out.println("时间戳转日期结果:" + format3);
//日期字符串转时间戳
ZonedDateTime zonedDateTime = LocalDateTime.of(2021, 10, 25, 10, 37, 49).atZone(ZoneId.of("Asia/Shanghai"));
// ZonedDateTime zonedDateTime = LocalDateTime.now().atZone(ZoneId.of("Asia/Shanghai"));
String format1 = zonedDateTime.format(dateTimePatternToFormatter.get("UNIX"));
String format2 = zonedDateTime.format(dateTimePatternToFormatter.get("UNIX_MS"));
System.out.println("日期字符串转时间戳(秒)结果:" + format1);
System.out.println("日期字符串转时间戳(毫秒)结果:" + format2);
System.out.println(zonedDateTime.toInstant().getEpochSecond());
java 时间字符串和时间戳转化(通用所有模版)
最新推荐文章于 2024-05-14 05:17:50 发布
关键词由CSDN通过智能技术生成