Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android应用程序中获取当前时区_Java_Android - Fatal编程技术网

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

Java 在android应用程序中获取当前时区,java,android,Java,Android,如何在Android应用程序中获取当前时区?我试着用这个 Calendar cal = Calendar.getInstance( userConfig.locale); TimeZone tz = cal.getTimeZone(); 但我不能从中得到时区。如何显示时区 String timezoneID = TimeZone.getDefault().getID(); System.out.println(timezoneID); 在我的控制台中,它打印Asia/Calcutta

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

Calendar cal = Calendar.getInstance( userConfig.locale);
TimeZone tz = cal.getTimeZone();   
但我不能从中得到时区。如何显示时区

String timezoneID = TimeZone.getDefault().getID();
System.out.println(timezoneID);
在我的控制台中,它打印
Asia/Calcutta

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

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy");
sdf2.setTimeZone(TimeZone.getTimeZone(timezoneID));

要显示当前时间,您应该在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);
用这个

Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Log.d("Time zone","="+tz.getDisplayName());
或者您也可以使用
java.util.TimeZone

TimeZone.getDefault().getDisplayName()

我需要的补偿,不仅包括白天节省的时间,但作为一个数字。下面是我在有人寻找示例时使用的代码

我得到的回答是“11”,这是我夏天在澳大利亚新南威尔士州所期望的。我还需要它作为一个字符串,这样我就可以将它发布到服务器上,这样您就不需要最后一行了

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

+1用于使用TimeZone.getDefault()而不是实例化日历来获取时区。
TimeZone.getDefault().getDisplayName()
效果良好。如果使用
JodaTime
,则可以使用
DateTime.now(DateTimeZone.getDefault())。如果您没有使用
JodaTime
,您应该查看它。这不适用于时差小于半小时的时区,例如纽芬兰,即GMT-2:30,您只需返回2个。请阅读并理解问题@gangeshwari