Java,奇怪的时间戳格式,以微秒为单位?

时间:2018-03-18 14:15:55

标签: java

如何将以下时间戳“2012-02-22T16:46:28.9870216 + 00:00”转换为Java可读和可处理的时间戳,而不会丢失任何准确性?它的数据格式是什么?例如关于我的目标,我收到2条消息,读取每条消息中的时间戳(如上面的例子所示)比较两个时间戳,以确定它们之间的旧时间

注意到下面的问题与我需要的不一致,不同之处在于他们谈论的时间戳格式是不同的2012-02-22T16:46:28.9870216 + 00:00,我不知道它 Converting ISO 8601-compliant String to java.util.Date

1 个答案:

答案 0 :(得分:0)

您可以使用此formatj = df.set_index('a').to_json(orient='index') print (j) {"A":{"b":4,"c":7},"B":{"b":5,"c":8},"C":{"b":4,"c":9}} 解析它。

DateTimeFormatter.ISO_OFFSET_DATE_TIME

如果您运行此代码,您将在控制台上看到:

public static void main(String[] args) throws IOException {
    String str = "2012-02-22T16:46:28.9870216+00:00";
    DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
    System.out.println(dtf.parse(str));
}

<强>更新

这是一个更新的响应,显示如何将字符串转换为{OffsetSeconds=0, InstantSeconds=1329929188},ISO resolved to 2012-02-22T16:46:28.987021600 并允许日期比较:

LocalDateTime

更新2:

如果您想以此格式打印日期,则必须使用public static void main(String[] args) throws IOException { String str = "2012-02-22T16:46:28.9870216+00:00"; DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME; LocalDateTime lds = LocalDateTime.parse(str, dtf); System.out.println(lds); String str2 = "2012-02-22T16:46:28.9970430+00:00"; String str3 = "2012-02-22T16:46:29.0270266+00:00"; LocalDateTime lds2 = LocalDateTime.parse(str2, dtf); LocalDateTime lds3 = LocalDateTime.parse(str3, dtf); System.out.println(lds2.compareTo(lds3)); System.out.println(lds3.compareTo(lds2)); } ,如下所示:

java.time.OffsetDateTime

打印出来:

public static void main(String[] args) throws IOException {
    OffsetDateTime now = OffsetDateTime.now();
    DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
    System.out.println(dtf.format(now));
}