【问题标题】:Getting the current time zone in android application [duplicate]在android应用程序中获取当前时区[重复]
【发布时间】:2012-03-17 23:20:53
【问题描述】:

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

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

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

【问题讨论】:

  • 如果你使用JodaTime,你可以使用DateTime.now( DateTimeZone.getDefault() );。如果你没有使用JodaTime,你应该检查一下。

标签: java android


【解决方案1】:

使用这个

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

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

TimeZone.getDefault().getDisplayName()

【讨论】:

  • +1 用于使用 TimeZone.getDefault() 而不是为了获取时区而实例化日历。
  • TimeZone.getDefault().getDisplayName() 效果很好。
【解决方案2】:
String timezoneID = TimeZone.getDefault().getID();
System.out.println(timezoneID);

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

任何日期格式,我都设置为...。

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 这不适用于时差低于半小时的时区,例如纽芬兰是 GMT-2:30,您只需返回 2 个
    【解决方案4】:

    要显示当前时间,您应该在 UI 线程上运行以下代码 sn-p。这对我有用:

    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
    猜你喜欢
    • 2018-03-13
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2014-10-08
    • 2011-02-18
    • 2020-05-30
    相关资源
    最近更新 更多