android - 如何从物理设备获取 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
解决方案
尝试这个
使用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 级别。
希望它能解决你的问题。
推荐阅读
- python - 根据相似的列值将单独的熊猫数据框中的列相乘
- c++ - 使用类从双向链表中删除节点
- php - 如何更改列以支持 unicode
- angular - npm 错误!无法读取未定义的属性“解决”
- reactjs - 获取`存储错误:应用程序试图写入一个没有提供类型名的对象,但存储已经包含一个具有类型名的对象`
- android - 使用 Activity ImageView 居中 Android WindowBackground
- python - 如何在 python 中中断 socket.recv()?
- java - 如何在春季从此查询中从表中获取值
- laravel-5 - 如何划分发送信息不同的刀片模板
- firebase - 如何根据后端定义的推荐版本检查用户当前安装的移动应用程序版本