【问题标题】:Get default timezone in android在android中获取默认时区
【发布时间】:2016-08-21 11:33:33
【问题描述】:

我需要在我的应用中获取当地时间。为此,我正在使用 Calendar 类。

代码:

Calendar calendar = Calendar.getInstance();

calendar.get(Calendar.HOUR_OF_DAY) 根据 GMT 显示小时数。

我检查了TimeZone.getDefault().getDisplayName() 将 GMT(不正确)显示为默认时区,但 java.util.TimeZone.getDefault().getDisplayName() 显示了正确的时区。 calendar.getTime().toString() 也显示正确的时间。

我不明白为什么android.icu.util.TimeZonejava.util.TimeZone 之间存在这种差异

编辑:

我最近发现有两个日历 API - java.util.Calendar(在 API 级别 1 中添加)和 android.icu.util.Calendar(在 API 级别 24 中添加)。

我一直在使用 android.icu.util.Calendar,但在 Android M 上对其进行了测试。所以现在我将使用 API java.util.Calendar

【问题讨论】:

  • @NabinKhadka 我得到了 GMT 时区的时间。但我的要求是获得当地时区的时间。
  • 您可以使用 TimeZone.getDefault() 它为您提供默认时区,日历实例默认选择默认时区

标签: java android android-calendar android-date


【解决方案1】:

您是否尝试过以下方法:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+05:30")); //If you are seeking local time of India

或者

date.setTimeZone(TimeZone.getTimeZone("GMT+05:30")); 

String localTime = date.format(currentLocalTime); //To get current local time

【讨论】:

  • 我需要时区是可变的,具体取决于用户的位置。 Android 文档建议为此目的使用 TimeZone.getDefault(),但在我的情况下它不起作用。
  • 你可以试试 long currentTime = new Date().getTime();它将给出设备的时间。因此,用户在哪个区域的时间
  • 我完全无法在我连接到 Android 工作室并使用 TimeZone.getDefault() 的任何设备上获取本地时区。我总是得到 GMT 时间,而 gmt Offset 为 0。有人知道如何在 api 22 及更高版本中获取实时时区吗?
【解决方案2】:

试试这个代码:

String.format("GMT %.2f", TimeZone.getDefault()).replace(",", ".")

你也可以通过这种方式获得你想要的时区:

TimeZone.getTimeZone("America/Los_Angeles");

有关更多详细信息,请查看此处的文档:https://developer.android.com/reference/java/util/TimeZone

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2012-01-03
    • 1970-01-01
    • 2020-12-26
    • 2011-03-16
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多