无法使用时区解析日期

时间:2014-09-16 06:15:58

标签: java android date datetime java-ee

为了观察,我刚刚添加了我的代码片段。它适用于具有时区偏移的格式日期,但无法解析格式化的内容。

    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SZ");
    Date javaDate = new Date();
    String stringDate = format.format(javaDate);
    System.out.println("Date: " + stringDate);

    try {
        javaDate = format.parse(stringDate); //reverse of format
    } catch (ParseException e) {
        e.printStackTrace();
    } 

任何直截了当的方式?考虑20140916130644.236+0600是您的日期字符串,您应该使用时区解析它的日期格式是什么?您可以轻松解析yyyyMMddHHmmss.S模式而.不是事实,主要事实是Z,而不是格式化。

4 个答案:

答案 0 :(得分:3)

由于.无效,请将其删除并尝试使用

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSZ");

或者如果你想拥有'。'然后像这样使用

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss'.'SZ");

答案 1 :(得分:1)

更改

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SZ");

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss'.'SZ");
  

日期和时间格式由日期和时间模式字符串指定。   在日期和时间模式字符串中,来自' A'的未加引号字母到了' Z'   并且来自'到' z'被解释为代表的模式字母   日期或时间字符串的组成部分。文字可以引用使用   单引号(')以避免解释。

答案 2 :(得分:1)

'T''Z'在此被视为常量。你需要传递没有引号的Z.此外,您需要在输入字符串中指定时区。

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

答案 3 :(得分:0)

直接的方式是日期解析格式应该看起来像yyyyMMddHHmmss.SSSZ,格式化格式和解析格式可能不同。格式化格式(yyyyMMddHHmmss.SZ)不应用于解析。解析格式(yyyyMMddHHmmss.SSSZ)可用于格式化。为了避免意外的结果/异常,最好使用yyyyMMddHHmmss.SSSZ格式进行格式化/解析,而不是yyyyMMddHHmmss.SZ