【问题标题】:How to get the timezone offset in UTC (like UTC+07:00) from a physical device?如何从物理设备获取 UTC 时区偏移量(如 UTC+07:00)?
【发布时间】:2019-04-23 23:27:54
【问题描述】:

如何从 Android 设备获取 UTC 时区偏移量(如UTC+03:00)?借助此代码,我可以检索 GMT 格式的时区偏移量(看起来像 GMT+03:00):

TimeZone.getDefault().getDisplayName(false, TimeZone.SHORT)

由于我无法以 UTC 格式检索时区偏移量(我想要实际检索的是 UTC+03:00 之类的东西)。如何做到这一点?

UPD

看来java.util.TimeZone类有问题,因为

val timeZoneGMT = TimeZone.getTimeZone("GMT")
Log.d("OLOLO ","Time zone GMT: " + timeZoneGMT.getDisplayName(false, TimeZone.SHORT))

输出

时区 GMT:GMT+00:00

但同时

val timeZone = TimeZone.getTimeZone("UTC")
Log.d("OLOLO ","Time zone UTC: " + timeZone.getDisplayName(false, TimeZone.SHORT))

输出如下:

时区 UTC:UTC

【问题讨论】:

  • 所有安卓版本的解决方案都在这里stackoverflow.com/a/21349556/2199894
  • @BasselMourjan,谢谢,但是这个关于返回 UTC 时间的问题。而且我需要确切的 UTC 偏移量,而不是 UTC 格式的时间......
  • 在这种情况下,我想到了另一个简单的解决方案.. string.replace() 将 GMT 替换为 UTC.. 因为两者都是相同的

标签: android time timezone timezone-offset


【解决方案1】:

试试这个

使用java.time

    long timeNow = OffsetDateTime.now(ZoneOffset.UTC)
            .toEpochSecond();
    Log.d("Time ","Three years ago: " 
            + NumberFormat.getIntegerInstance().format(timeNow));

注意:为此,您的最低 API 级别必须为 19 或以上。

使用Calender

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

Log.d("Time ",sdf.format(calendar.getTime()));

注意:- 这适用于所有 API 级别。

希望它能解决你的问题。

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2016-05-07
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2013-08-28
    • 1970-01-01
    相关资源
    最近更新 更多