如何将以下时间戳“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
答案 0 :(得分:0)
您可以使用此format:j = 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));
}