获取Android应用程序中的当前时区

Mat*_*hew 56 java android

如何在Android应用程序中获取当前时区?我试着用这个

Calendar cal = Calendar.getInstance( userConfig.locale);
TimeZone tz = cal.getTimeZone();   
Run Code Online (Sandbox Code Playgroud)

但我没有从中得到时区.如何显示时区?

Joh*_*ohn 112

用这个

Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Log.d("Time zone","="+tz.getDisplayName());
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用该java.util.TimeZone课程

TimeZone.getDefault().getDisplayName()
Run Code Online (Sandbox Code Playgroud)

  • +1使用TimeZone.getDefault()而不是实例化日历只是为了获得时区. (27认同)

Sam*_*iya 29

String timezoneID = TimeZone.getDefault().getID();
System.out.println(timezoneID);
Run Code Online (Sandbox Code Playgroud)

在我的控制台中,它打印出来 Asia/Calcutta

和任何日期格式,我设置它像....

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy");
sdf2.setTimeZone(TimeZone.getTimeZone(timezoneID));
Run Code Online (Sandbox Code Playgroud)


tim*_*imv 16

我需要的偏移不仅包括日光节省时间,还包括数字.这是我用过的代码,以防有人正在寻找一个例子.

我收到了"11"的回复,这是我在夏天的澳大利亚新南威尔士州所期望的.我还需要它作为一个字符串,所以我可以将它发布到服务器,所以你可能不需要最后一行.

TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime()) / 3600000;
String m2tTimeZoneIs = Integer.toString(offsetFromUtc);
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于半小时差异的时区,例如Newfoundland,这是GMT-2:30,你只需要2回 (4认同)