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

标签 java datetime

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

“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/

相关文章:

java - 在调用父类(super class)型之前无法引用 java

java - 如何更改 JavaFX 中聚焦文本字段的发光轮廓颜色?

php - 更新日期时间最后 8 个字符 (....-..-.. hh :mm:ss)

vb.net - 在vb.net中将字符串转换为datetime

r - lubridate:如何将 difftime 转换为毫秒单位(并绘制它)?

java - logstash 运行程序错误

java - map 作为富人的支持属性(property) :pickList

javascript - 使用 Javascript 查找本月的第二个和第四个星期二

java - RxJava - 在循环中合并请求序列

javascript - JS 周、小时、天到秒……然后再回来