用时区“Etc / GMT”解析日期

我的第一次尝试是:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
Date date = formatter.parse(string);

它抛出ParseException,所以我发现这个黑客:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
TimeZone timeZone = TimeZone.getTimeZone("Etc/GMT");
formatter.setTimeZone(timeZone);
Date date = formatter.parse(string);

它也没有工作,现在我卡住了。 如果我只是将时区更改为“GMT”,它解析没有问题。

编辑:一个示例字符串解析将是“2011-11-29 10:40:24 Etc / GMT”

编辑2:我不想完全删除时区信息。 我正在编写一个接收来自外部用户的日期的服务器,所以其他日期可能有其他时区。 更确切地说:我收到的这个特定日期来自苹果服务器在iphone应用程序中进行应用程序购买后的收据,但我也可以从其他来源获得日期。


不知道这个问题是否与你相关,但如果你使用乔达时间,这将工作:

DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss ZZZ").parseDateTime(s)

如果没有乔达时间,下面的工作将会发挥作用:

String s = "2011-11-29 10:40:24 Etc/GMT";

// split the input in a date and a timezone part            
int lastSpaceIndex = s.lastIndexOf(' ');
String dateString = s.substring(0, lastSpaceIndex);
String timeZoneString = s.substring(lastSpaceIndex + 1);

// convert the timezone to an actual TimeZone object
// and feed that to the formatter
TimeZone zone = TimeZone.getTimeZone(timeZoneString);
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setTimeZone(zone);

// parse the timezoneless part
Date date = formatter.parse(dateString);

它没有为我工作或者事情是我试图将SimpleDateFormatter的TimeZone设置为“Etc / GMT”,然后在这里格式化一个新的日期是输出:

2011-11-30 10:46:32 GMT + 00:00

所以Etc / GMT被翻译成GMT + 00:00

如果你真的想坚持解析“2011-09-02 10:26:35 Etc / GMT”,那么即使没有考虑明确的时区变化,下面的内容也会有所帮助:

java.text.SimpleDateFormat isoFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss 'Etc/GMT'");
isoFormat.parse("2010-05-23 09:01:02 Etc/GMT");

工作正常。


以下代码正在为我工​​作


   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
            sdf.setTimeZone(TimeZone.getTimeZone("Etc/GMT"));
            try { System.out.println( sdf.parse("2011-09-02 10:26:35 Etc/GMT") ); 
            } catch (ParseException e){ 
                e.printStackTrace(); 
            }

链接地址: http://www.djcxy.com/p/10167.html

上一篇: Parse a date with the timezone "Etc/GMT"

下一篇: Failed to install Production Provisioning Profile