gpt4 book ai didi

java - 在java中将字符串日期时间转换为日期?

转载 作者:行者123 更新时间:2023-12-01 07:22:00 25 4
gpt4 key购买 nike

我正在尝试将这两个字符串转换为日期,但遇到了无法解析日期的异常。

“2015-12-03T15:00:08.868987”和“2015-12-03T17:00:08Z”。尝试了这两种格式“yyyy-MM-dd'T'HH:mm:ss.SSSXXX”和“yyyy-MM-dd'T'HH:mm:ss.SSSZ”

    String s = "2015-12-03T17:00:08Z";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
try
{
Date date = simpleDateFormat.parse(s);

System.out.println("date : "+simpleDateFormat.format(date));
}
catch (ParseException ex)
{
System.out.println("Exception "+ex);
}

最佳答案

原因是您使用了错误的格式,此处 Z 代表时区

 String s = "2013-09-29T18:46:19-0700";
SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

如果时间格式是上面的,就可以正常工作。如果你只是用单引号标记Z,它只会将其视为字符串而不是解析它。

编辑:-如果您想使用“2015-12-03T15:00:08.8689870”,则模式必须为 yyyy-MM-dd'T'HH:mm:ss.SSS

String s = "2015-12-03T15:00:08.8689870";
SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");

如果日期时间是 2015-12-03T17:00:08Z,那么您可以使用模式 yyyy-MM-dd'T'HH:mm:ssX,其中 X 表示 ISO 8601 时区。SimpleDateFormat 的 Java 7 版本支持使用大写字母 X 的 ISO-8601 时区。

String s = "2015-12-03T17:00:08Z";
SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");
Date dtIn = inFormat.parse(s);

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

如果您一直使用 Java 6 或更早版本,那么推荐 JodaTime 是一个安全的选择。

String timestamp = "2011-04-15T20:08:18Z";

DateTime dateTime = ISODateTimeFormat.dateTimeParser().parseDateTime(timestamp);

这可以正确识别 UTC 时区,并允许您使用 Joda Time 的广泛操作方法来获取您想要的内容。

关于java - 在java中将字符串日期时间转换为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071182/

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