gpt4 book ai didi

java - SimpleDateFormat 无法正确解析时间

转载 作者:行者123 更新时间:2023-12-02 10:16:32 27 4
gpt4 key购买 nike

这种情况发生在一个(可能更多)日期时间上,其中时间部分在解析中完全错误。

代码:

import java.text.*;
import java.util.*;

public class TestTimeParse {
public static void main(String[] args) {
SimpleDateFormat dateFmt = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.getDefault());
dateFmt.applyPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'");
ParsePosition pos = new ParsePosition(0);
Date date = dateFmt.parse("2018-11-01T18:07:55.6725292Z", pos);
System.out.println("Text 2018-11-01T18:07:55.6725292Z parses as " + date);
}
}

输出:

Text 2018-11-01T18:07:55.6725292Z parses as Thu Nov 01 20:00:00 MDT 2018

时间部分发生了什么?小时错误,分钟和秒被清零。

最佳答案

这是one of the problems与过时的 DateCalendarSimpleDateFormat 类。您不应该使用它,因为它已被 Java 8 中新的日期和时间 API 取代。它可以在 java.time 包中找到。

String str = "2018-11-01T18:07:55.6725292Z";
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'";

LocalDateTime ts = LocalDateTime.parse(str, DateTimeFormatter.ofPattern(pattern));
System.out.println("Text 2018-11-01T18:07:55.6725292Z parses as " + ts);
<小时/>

SimpleDateFormat 似乎只能读取最多三毫秒的数字。如果将日期的小数部分截断为三位数字(即“2018-11-01T18:07:55.672”而不是“2018-11-01T18:07:55.6725292Z”),并且还更改相应的 ' S' 模式说明符,即“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”。

关于java - SimpleDateFormat 无法正确解析时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com