首页 > 解决方案 > 如何从物理设备获取 UTC 时区偏移量(如 UTC+07:00)?

问题描述

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

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

标签: androidtimetimezonetimezone-offset

解决方案


尝试这个

使用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 级别。

希望它能解决你的问题。


推荐阅读