我想解析格式为"12:34:56"
(来自外部Web服务)的时间值为Date
,Calendar
或任何可以稍后与当前时间比较的内容。默认时区的Android解析时间
问题是,在Android上,DateFormat.parse
似乎忽略了用户的默认时区,并将该值解析为UTC格式。鉴于此代码:
DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
String inTime = "12:34:56";
Date time = timeFormat.parse(inTime);
Date now = new Date();
我让我的桌面上的通缉的结果(Java 1.6.0_29):
Thu Jan 01 12:34:56 CET 1970
Mon Nov 21 20:53:04 CET 2011
换句话说,字符串 “12:34:56”,在被解析默认时区。但是,在Android上,这似乎在UTC被解析,因为它是一个小时:
Thu Jan 01 11:34:56 GMT+0100 1970
Mon Nov 21 20:53:02 GMT+0100 2011
我甚至尝试设置使用timeFormat.setTimeZone(TimeZone.getDefault())
的时区,但是这并没有帮助。有什么方法可以强制DateFormat.parse
解析Android中默认(用户)时区的时间,还是我必须将所有内容都转换为UTC,然后才能使其工作?
是你自己的时区吗? –
是的,CET目前是GMT + 1,所以时区信息是正确的,但时间解析的时区不是。 –
嘿,你如何打印这两个输出,一个是1970年,另一个是2011年?我不明白你如何得到2011年的线路。 –