我在这个主题上阅读了很多类似的SO问题,但我现在仍然很困惑如何做到这一点......我试着让它变得简单:
我得到了这个字符串:"Sat Jan 24 00:00:00 GMT+100 2015"
不得以任何方式修改
我现在的问题是:我将使用什么样的模式将此String解析为java.util.Date?我试过了:"EEE MMM dd HH:mm:ss z yyyy"
但它失败了“不可解决的日期”
我所知道的是:如果我有"Sat Jan 24 00:00:00 GMT+1:00 2015"
,这是相同的(对吗?),那么我的模式就可以了。但我不能(想要......)修改它。
- > 是否有开箱即用的模式,是或否?
PS:我认为这个问题的结尾是其他所有问题的重复,但如果你这样投票,请另外回答我的大胆问题,因为我无法确定地阅读它
提前致意并表示感谢
答案 0 :(得分:2)
"小时数必须介于0到23之间,分钟数必须介于00到59之间。例如," GMT + 10"和" GMT + 0010"比格林尼治标准时间早10小时10分钟。"
根据java时区规范http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html,这是我发现的三个字母时区三个字母的时区ID
为了与JDK 1.1.x兼容,还有一些其他三个字母的时区ID(例如" PST"," CTT"," AST&#34 ;)也受支持。但是,它们的使用已被弃用,因为相同的缩写通常用于多个时区(例如," CST"可能是美国和#34;中央标准时间"以及"中国标准时间& #34;),然后Java平台只能识别其中一个。
所以我认为没有任何开箱即用的模式适合你。检查另一个answer。
答案 1 :(得分:0)
我不认为有一种模式可以匹配您的时区/偏移量GMT+100
。您可以在解析之前修改输入:
String input = "Sat Jan 24 00:00:00 GMT+100 2015";
input = input.replaceAll("([+-])(\\d+?)(\\d{2})", "$1$2:$3");
String pattern = "EEE MMM dd HH:mm:ss z yyyy";
Date date = new SimpleDateFormat(pattern, Locale.ENGLISH).parse(input);