es的日期数据在kibana看到是Oct 27, 2024 @ 22:37:02.613,用java读取却是2024-10-27T14:38:05.721Z
时间: 2024-10-29 18:25:33 浏览: 28
在Kibana中看到的日期格式通常是"MM/DD/YYYY HH:mm:ss.SSS"这种美国英语(American English)的格式,其中时间采用24小时制,并包括毫秒。而Java默认处理的时间戳是ISO 8601标准,即"yyyy-MM-dd'T'HH:mm:ss.SSSZ",这个格式中时间也是24小时制,但年月日之间有'-',并且以'Z'表示UTC。
当你从Kibana的这种格式读取到Java中时,需要将日期字符串转换成Java可以识别的格式。你可以使用`SimpleDateFormat`或者`DateTimeFormatter`类来进行这样的转换。这里是一个简单的示例:
```java
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
public class DateConverter {
public static void main(String[] args) {
String kibanaFormat = "Oct 27, 2024 @ 22:37:02.613";
String iso8601Format = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
try {
SimpleDateFormat kbnFormatter = new SimpleDateFormat("MMM dd, yyyy 'at' HH:mm:ss.SSS");
LocalDateTime kbnLocalDate = kbnFormatter.parse(kibanaFormat);
// 将日期转换为ISO 8601格式
LocalDateTime zonedDateTime = LocalDateTime.ofInstant(kbnLocalDate.toInstant(), ZoneId.systemDefault());
LocalDateTime utcDateTime = zonedDateTime.withZoneSameInstant(ZoneOffset.UTC);
String javaFormat = utcDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
System.out.println(javaFormat); // 输出:2024-10-27T22:37:02.613Z
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个例子中,我们首先解析了Kibana的日期格式,然后将其转换为`LocalDateTime`对象,接着调整为UTC时区并格式化为ISO 8601格式。
阅读全文