【问题标题】:Easiest way to parse date in String format to GregorianCalendar将字符串格式的日期解析为 GregorianCalendar 的最简单方法
【发布时间】:2011-11-27 00:23:54
【问题描述】:

我有以下日期:

2011-10-07T08:51:52.006Z

现在我想把它解析成一个 GregorianCalendar。有没有比使用子字符串并将它们解析为整数更简单的方法?

时间字符串中的 Z 是什么?

我尝试使用 SimpleDateFormat 对其进行解析,但在日期字符串中找不到 T 的解释。

【问题讨论】:

    标签: java time


    【解决方案1】:
    DateFormat format = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" )
    Date       date = format.parse( "2011-10-07T08:51:52.006Z" );
    Calendar   calendar = new GregorianCalendar();
    
    calendar.setTime( date );
    

    【讨论】:

    • 当使用 XXXX ISO-8601 格式时,Z(如 Gonzalo 的回答中所述)不是常量字母 ('Z'),而是 GMT 时间的缩写。
    • 调用calendar.setTime(date)会以毫秒为单位设置时间,但会丢失时区信息(示例中Z所示的XXXX格式。)
    【解决方案2】:

    我会看看DateTimeFormatter

    DateTimeFormatter formatter =
        DateTimeFormat.forPattern("<custom_pattern>").withOffsetParsed();
    DateTime dateTime = formatter.parseDateTime("<your_input>");
    GregorianCalendar cal = dateTime.toGregorianCalendar();
    

    字符串中的 T 充当日期和时间之间的分隔符,Z 是ISO-8601 format 的时区信息。

    【讨论】:

      【解决方案3】:

      您可以使用SimpleDateFormatter 来解析字符串。请阅读上述类的 javadoc 以了解格式字符串可能是什么。 “Z”表示时区信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-17
        • 2011-08-22
        • 1970-01-01
        • 2012-07-21
        相关资源
        最近更新 更多