【发布时间】:2011-05-27 15:05:23
【问题描述】:
我在 android 2.1 上运行的程序中遇到了一个奇怪的问题,这对我来说似乎是 android 中的一个错误。请告诉我这里发生了什么,因为我迷路了。 :)
以下程序:
import java.util.*;
import java.text.*;
class TestMe {
public static void main(String[] args) {
String time = "2010-08-01T18:00:00+0000";
TimeZone tg = TimeZone.getDefault();
System.out.println(tg.getID());
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
try {
Date indate = formatter.parse(time);
String outdate = formatter.format(indate);
System.out.println(outdate);
formatter.setTimeZone( TimeZone.getTimeZone("UTC"));
String ooutdate = formatter.format(indate);
System.out.println(ooutdate);
formatter.setTimeZone( TimeZone.getDefault() );
Date ioutdate = formatter.parse(ooutdate);
System.out.println(formatter.format(ioutdate));
} catch( Exception e ) {
e.printStackTrace();
}
}
}
在 mac 上使用最新的 java se 时返回:
(~) % javac -g TestMe.java && java TestMe
Europe/Berlin
2010-08-01T20:00:00+0200
2010-08-01T18:00:00+0000
2010-08-01T20:00:00+0200
但是当我在 2.1 上的 android 应用程序的方法中运行它时返回以下内容:
I/System.out( 5379): ------------------------------------------------------------------
I/System.out( 5379): Europe/Berlin
I/System.out( 5379): 2010-08-01T20:00:00+0200
I/System.out( 5379): 2010-08-01T18:00:00+0100
I/System.out( 5379): 2010-08-01T18:00:00+0100
I/System.out( 5379): ------------------------------------------------------------------
有人知道这个特定的 android api 版本中存在 TimeZone 和 Date 解析的问题吗?这对我来说是一个非常奇怪的问题,因为它的 android 版本应该返回与 java se 版本完全相同但没有。
感谢任何提示,
卡斯滕
【问题讨论】: