印度標準時間(IST)是格林尼治標準時間前5:30(5小時30分鐘)。我們將其顯示爲GMT + 5.5。獲得格林威治標準時間
是否有任何方法可以按時區查找此值(在上面的情況下,值= 5.5)?
在我的Android應用程序中,我可以獲取設備時區。但如何使用設備時區獲取此值?
印度標準時間(IST)是格林尼治標準時間前5:30(5小時30分鐘)。我們將其顯示爲GMT + 5.5。獲得格林威治標準時間
是否有任何方法可以按時區查找此值(在上面的情況下,值= 5.5)?
在我的Android應用程序中,我可以獲取設備時區。但如何使用設備時區獲取此值?
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);
它會爲你工作。
試試這個代碼
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秒
檢查時區類。原始偏移量是你想要的,以毫秒爲單位。您可以輕鬆地將其轉換爲數小時的值。
long rawOffset = TimeZone.getDefault().getRawOffset();
見http://developer.android.com/reference/java/util/TimeZone.html#getRawOffset()
這實際上是我需要的。
double rawOffset = TimeZone.getDefault().getRawOffset();
rawOffset = rawOffset/(60 * 60 * 1000);
System.out.println("rawOffset : " + rawOffset);
它不適用於日光節約狀態和國家。 – 2013-03-21 09:47:22
好的。謝謝你的提示。 – Bishan 2013-03-21 10:42:11
「Asia/Kolkata」可以被不同的有效時區字符串替換。 – 2013-03-21 09:41:37
我可以使用'tz.getRawOffset()'而不是'TimeZone.getDefault()。getRawOffset()'? – Bishan 2013-03-21 10:43:25
代碼中的「mn」是什麼? 'cal.set(mn.Year(),mn.Month(),mn.Day(),mn.Hour(),mn.minute(), (int)mn.second());' – Bishan 2013-03-21 10:52:49