使用metricbeat等一些服务的时候会遇到生成的消息中带T带Z的情况,而且还带毫秒值,很多时候对数据的精度要求没有很高,毫秒也扔掉了,z、t也直接replace掉了。今天强迫症犯了想原封不动的将这种格式的字符串时间转换成时间类型或者事件戳类型。
代码
public static void main(String[] args) {
//字符串时间,带T带Z带毫秒值
String stime = "2020-11-18T04:31:40.886Z";
//创建对应的pattern,注意T和Z两个字符使用单引号引起来,毫秒值使用大写S表示
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
//字符串时间转换成时间类型
LocalDateTime date = LocalDateTime.parse(stime, pattern);
//时间类型转时间戳类型
long ts = date.toInstant(ZoneOffset.of("+8")).toEpochMilli();
System.out.println(date+" \nts:"+ts);
}
处理带TZ的时间字符串
本文介绍了一种将特定格式的时间字符串(包含T、Z及毫秒值)转换为时间类型和时间戳的方法。通过示例代码展示了如何使用Java的DateTimeFormatter进行格式匹配,并将字符串时间转换为LocalDateTime对象,进而转换为时间戳。
4441





