java-在android应用程序中获取当前时区

这个问题在这里已有答案:

  • 如何从Android Mobile获取TimeZone?                                     10个答案

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

Calendar cal = Calendar.getInstance( userConfig.locale);
TimeZone tz = cal.getTimeZone();   

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

Matthew asked 2019-11-08T16:42:39Z
4个解决方案
111 votes

用这个

Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Log.d("Time zone","="+tz.getDisplayName());

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

TimeZone.getDefault().getDisplayName()
John answered 2019-11-08T16:43:00Z
29 votes
String timezoneID = TimeZone.getDefault().getID();
System.out.println(timezoneID);

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

以及任何日期格式,我将其设置为...。

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy");
sdf2.setTimeZone(TimeZone.getTimeZone(timezoneID));
Samir Mangroliya answered 2019-11-08T16:43:31Z
16 votes

我需要的偏移量不仅包括夏令时,而且还包括数字。 如果有人在寻找示例,这是我使用的代码。

我得到的响应是“ 11”,这是我夏天在澳大利亚新南威尔士州所期望的。 我还需要它作为字符串,因此我可以将其发布到服务器,因此您可能不需要最后一行。

TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime()) / 3600000;
String m2tTimeZoneIs = Integer.toString(offsetFromUtc);
timv answered 2019-11-08T16:44:03Z
-7 votes

要显示当前时间,您应该在UI线程上运行以下代码段。 这为我工作:

Timer timer = new Timer();          
timer.schedule(new TimerTask() {          
    public void run() {      
        runOnUiThread(new Runnable(){      
            public void run() {      
                dateTxt.setText(new Date().toString());      
            }      
        });      
    }      
}, 0, 1000);
gangeshwari answered 2019-11-08T16:44:33Z
translate from https://stackoverflow.com:/questions/9482754/getting-the-current-time-zone-in-android-application