android - 如何获取 UTC 中的时区偏移量(如 UTC+07 :00) from a physical device?

标签 android time timezone timezone-offset

如何从 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))

输出

Time zone GMT: GMT+00:00

但同时

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

输出是这样的:

Time zone UTC: UTC

最佳答案

试试这个

使用 java.time

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

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

使用日历

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

希望能解决您的问题。

关于android - 如何获取 UTC 中的时区偏移量(如 UTC+07 :00) from a physical device?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53411307/

相关文章:

timezone - 为什么android有美国/密歇根时区?

javascript - 将 UTC 时间戳解析为本地时间,忽略时区

java - 如何获得自定义标题 View ?

android - 如何在 Kotlin 中设置支持缩放

PHP/MySQL - 将日期时间显示为日期

c++ - 有什么简单的方法可以将 "02:00"转换为分钟,比如 120?

java - android:尝试将计数器信息添加到sqlite数据库

android - 将自定义监听器添加到 Kotlin 类的正确方法

python - 在 python 3 中“尝试” 'duration'

ruby - 未初始化的常量 ActionView::CompiledTemplates::Timezone