2013-03-21 138 views
2

印度标准时间(IST)是格林尼治标准时间前5:30(5小时30分钟)。我们将其显示为GMT + 5.5。获得格林威治标准时间

是否有任何方法可以按时区查找此值(在上面的情况下,值= 5.5)?

在我的Android应用程序中,我可以获取设备时区。但如何使用设备时区获取此值?

回答

2
double timezoneval = 0.0; 
     Calendar cal = Calendar.getInstance(); 
     cal.set(mn.Year(), mn.Month(), mn.Day(), mn.Hour(), mn.minute(), 
       (int) mn.second()); 
     TimeZone tz = TimeZone.getDefault(); 
     boolean t = tz.inDaylightTime(cal.getTime()); 
     if (t) 
      timezoneval = ((TimeZone.getDefault().getRawOffset()) 
        /(60 * 60 * 1000D) + (TimeZone.getDefault() 
        .getDSTSavings()/(60 * 60 * 1000D))); 
     else 
      timezoneval = ((TimeZone.getDefault().getRawOffset())/(60 * 60 * 1000D)); 

你可以试试这个代码。这会给你时区的价值。如果你想要不同的时区值;只是改变 TimeZone tz = TimeZone.getDefault();

TimeZone tz = TimeZone.getTimeZone("Asia/Kolkata"); 
     TimeZone.setDefault(tz); 

它会为你工作。

+0

“Asia/Kolkata”可以被不同的有效时区字符串替换。 – 2013-03-21 09:41:37

+0

我可以使用'tz.getRawOffset()'而不是'TimeZone.getDefault()。getRawOffset()'? – Bishan 2013-03-21 10:43:25

+0

代码中的“mn”是什么? 'cal.set(mn.Year(),mn.Month(),mn.Day(),mn.Hour(),mn.minute(), (int)mn.second());' – Bishan 2013-03-21 10:52:49

0

尝试:

TimeZone.getDefault(); 

getDefault()返回当前设备的时区的详细信息。然后,您可以拨打getOffset()来获得UTC与此时区之间的差异。

0

试试这个代码

public class Sample { 


public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    try { 
     String dateStr = "2010-06-14 02:21:49-0400"; 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ"); 
     TimeZone tz = TimeZone.getDefault(); 
     sdf.setTimeZone(tz); 
     Date date = sdf.parse(dateStr); 

     sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a"); 
     String newDateStr = sdf.format(date); 

     System.out.println(newDateStr); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
} 

输出应该喜欢这个

2010-06-14上午08时21分49秒

-1

这实际上是我需要的。

double rawOffset = TimeZone.getDefault().getRawOffset(); 

rawOffset = rawOffset/(60 * 60 * 1000); 

System.out.println("rawOffset : " + rawOffset); 
+0

它不适用于日光节约状态和国家。 – 2013-03-21 09:47:22

+0

好的。谢谢你的提示。 – Bishan 2013-03-21 10:42:11

相关问题