根据当前时区将UTC日期/时间显示为日期/时间

时间:2010-11-01 10:32:52

标签: java android datetime

我从网上获取日期/时间字符串,格式为“yyyy / mm / dd'T'HH:MM:SS'Z'”,并且是UTC格式。

现在我必须确定设备的当前时区,然后将此时间转换为我当地时间..

我该怎么做,请建议我!!

(仅供参考,目前,UTC时间是上午10:25,印度当前时间是下午3:55)

1 个答案:

答案 0 :(得分:13)

尝试使用TimeZone.getDefault()代替TimeZone.getTimeZone("GMT")

来自the docs

  

...你得到了一个TimeZone   getDefault,它创建一个TimeZone   基于时区所在的时区   程序正在运行。

编辑:您可以使用SimpleDateFormat解析日期(还有格式字符串的文档)。在您的情况下,您想要(未经测试):

 // note that I modified the format string slightly
 SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd'T'HH:mm:ss'Z'");
 // set the timezone to the original date string's timezone
 fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
 Date date = fmt.parse("1998/12/21T13:29:31Z", new ParsePosition(0));

 // then reset to the target date string's (local) timezone
 fmt.setTimeZone(TimeZone.getDefault());
 String localTime = fmt.format(date);

或者,使用两个单独的SimpleDateFormat实例,一个用于原始实例,另一个用于目标时间。