当前位置:  开发笔记 > 编程语言 > 正文

在Java中将String datetime转换为Date?

如何解决《在Java中将Stringdatetime转换为Date?》经验,为你挑选了1个好方法。

我正在尝试将这两个字符串转换为日期,并且无法获取异常。

“ 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);
    }

Naruto.. 5

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

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

如果时间格式在上面,则可以正常工作。如果仅将Z标记在单引号中,它将仅被视为一个String而不是对其进行解析。

编辑:-如果要使用“ 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时区。Java7版本的SimpleDateFormat支持ISO- 8601时区使用大写字母X。

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广泛的操作方法来获取所需的信息。



1> Naruto..:

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

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

如果时间格式在上面,则可以正常工作。如果仅将Z标记在单引号中,它将仅被视为一个String而不是对其进行解析。

编辑:-如果要使用“ 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时区。Java7版本的SimpleDateFormat支持ISO- 8601时区使用大写字母X。

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广泛的操作方法来获取所需的信息。

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有