【问题标题】:How to parse date String containing Locale如何解析包含语言环境的日期字符串
【发布时间】:2012-04-14 06:54:33
【问题描述】:

我有一个日期字符串“Sat Jan 28 00:00:00 IST 2012”,我正在尝试使用 Joda 的 DateTimeFormatter 对其进行解析。我有以下代码,不知道哪里出错了。

DateTimeFormatter dateFmt = DateTimeFormat
            .forPattern("EEE MMM dd HH:mm:SS ZZZ yyyy");
DateTime dateTime = dateFmt.parseDateTime(dateString);

异常:java.lang.IllegalArgumentException:无效格式:“IST 2012 年星期六 1 月 28 日 00:00:00”在“IST 2012”处格式错误。请帮我解决这个问题。感谢您的帮助。

【问题讨论】:

    标签: java parsing timezone jodatime


    【解决方案1】:

    IST不是API识别时区,只能识别getAvailableIds()中的一个时区

    【讨论】:

    • 如果你的意思是印度标准时间,那么可以用5.5 调用public static String[] getAvailableIDs(int rawOffset) 并查看它返回的内容,应该有类似Kolkatta/India 的东西不确定,检查一下
    • 嘿,IST 在那里,我刚刚尝试将它们全部打印出来。 for (String string : TimeZone.getAvailableIDs()) { System.out.println(string); }
    • 然后按照 Matt 的建议将 ZZZ 替换为 zzz
    【解决方案2】:

    使用zzz(小写),而不是ZZZ(大写)。来自the API docs

     z   time zone              text      Pacific Standard Time; PST
     Z   time zone offset/id    zone      -0800; -08:00; America/Los_Angeles
    

    【讨论】:

      【解决方案3】:

      我不知道为什么,但如果我使用 SimpleDateFormat 而不是 DateTimeFormatter,它就可以工作。

      代码:

      public static void main(String[] args) throws ParseException {
              String FORMAT = "EEE MMM dd HH:mm:SS zzz yyyy";
              String dateString = "Sat Jan 28 00:00:00 IST 2012";
              SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT);
              Date date = dateFormat.parse(dateString);
              System.out.println(new DateTime(date));
              DateTimeFormatter dateFmt = DateTimeFormat.forPattern(FORMAT);
      //      System.out.println(dateFmt.parseLocalDateTime(dateString));
      //      System.out.println(dateFmt.parseDateTime(dateString));
              System.out.println(dateFmt.parseLocalTime(dateString));
          }
      

      【讨论】:

        猜你喜欢
        • 2014-03-15
        • 2015-01-21
        • 1970-01-01
        • 1970-01-01
        • 2021-01-27
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多