2014-03-31 133 views
4

在我的Android应用程序服务器将返回一些UTC日期格式为(yyyy-MM-dd HH:mm:ss)24小时,我需要将这些时间转换为用户的TimeZone for示例CSTIST如何将UTC时间转换为其他时区(“CST”,“IST”)

我做了下面的代码,但我知道它是否正确,请协助我以正确的方式进行时区转换。

我得到UTC日期为JSON字符串转换成用户的时区格式和显示Android的侧

private static Date utcDate; 
private static DateFormat expireFormat = new SimpleDateFormat(
     "yyyy-MM-dd HH:mm:ss"); 

     try { 
      expireFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
      utcDate = expireFormat.parse("2014-04-01 10:32:00"); 
      System.out.println(TimeZone.getDefault().getID()); 
      expireFormat.setTimeZone(TimeZone.getTimeZone(TimeZone.getDefault().getID())); 
      System.out.println(expireFormat.format(utcDate)); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

    output of the code: 
    Asia/Calcutta 
    2014-04-01 16:02:00 
+0

TimeZone.getDefault()。getOffset(now.getTime()),现在是用户的当前时间,应该给GMT设备的时区偏移量。 – mraviator

回答

4

总的做法是确定的,如果重新格式化字符串真的是你想要什么得到。

有一些问题虽然

  1. SimpleDateFormat不是线程安全类。将其设置为服务器内的静态字段是一个问题!

  2. 与使用静态字段来保存中间日期对象的#1相同。

  3. 是“CST”中国标准时间吗?中部标准时间(美国还是澳大利亚)?古巴标准时间?三字母缩写TimeZone是一般的坏消息。尽可能尝试使用奥尔森名称或别名。

  4. 这是服务器端还是android?如果它是一个服务器,那么您可能会受益于新的用于DateTime处理的Java 8 API。

+0

请检查我的更新代码。而不是给予“CST”我使用时区获取方法和转换将在Android端完成。 –

相关问题