从 GWT 解析带有时区的日期

Parse Date with time zone from GWT

我读了很多关于这个主题的类似 SO 问题,但我现在仍然很困惑该怎么做......我试着让它变得简单:

我得到了这个字符串:"Sat Jan 24 00:00:00 GMT+100 2015" 不得以任何方式修改

我现在的问题是:我应该使用什么样的模式来将这个字符串解析成java.util.Date?我试过:"EEE MMM dd HH:mm:ss z yyyy" 但它失败了 "unparsable Date"

我所知道的是:如果我有 "Sat Jan 24 00:00:00 GMT+1:00 2015",这是相同的(对吗?),那么我的模式就可以工作。但是我不能(想要..)修改它。

--> 是否有开箱即用的模式,是或否?

PS:我认为这个问题的结尾与所有其他问题重复,但如果你投票赞成,请另外回答我的大胆问题,因为我无法确定地从那里读出来

提前致以问候和感谢

我认为没有一种模式可以匹配您的时区/偏移量GMT+100。您可以在解析之前修改输入:

String input = "Sat Jan 24 00:00:00 GMT+100 2015";
input = input.replaceAll("([+-])(\d+?)(\d{2})", ":");

String pattern = "EEE MMM dd HH:mm:ss z yyyy";
Date date = new SimpleDateFormat(pattern, Locale.ENGLISH).parse(input);

"Hours must be between 0 to 23 and Minutes must be between 00 to 59. For example, "GMT+10" 和 "GMT+0010" 分别表示比 GMT 早十小时和十分钟。"

根据 java 时区规范 http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html 这是我找到的三字母时区三字母时区 ID

为了兼容JDK1.1.x,一些其他的三字母时区ID(比如"PST","CTT","AST") 也支持。但是,它们的使用已被弃用,因为相同的缩写经常用于多个时区(例如,"CST" 可能是 U.S。"Central Standard Time" 和 "China Standard Time"),并且 Java 平台只能识别其中之一

所以我认为没有适合您的开箱即用模式。检查另一个 answer .