繁体   English   中英

从设备获取日期并将其转换为GMT + 4

[英]Get date from device and convert it to GMT+4

我正在尝试查找android手机的时区。 因为我想获取日期对象,但我想使用GMT + 4格式。 我看到的所有其他答案都将转换来自API请求的时间(已知时区)。 我该怎么做?

其他方法可能是将来自我的GMT + 4时间从服务器转换为设备的本地时间。

最好使用实时区域,而不仅仅是偏移+04。 例如:

    OffsetDateTime currentDateTimeInGeorgia = OffsetDateTime.now(ZoneId.of("Asia/Tbilisi"));
    System.out.println(currentDateTimeInGeorgia);

此代码段仅输出:

2018-09-13T19:18:35.642592 + 04:00

请替换您自己的时区。 如果您确实坚持使用GMT + 4,请使用ZoneOffset.ofHours(4)

OffsetDateTime ,旧的Date类不能包含偏移量或时区,而现代的OffsetDateTime可以。 Date类的设计也很差,因此请考虑使用java.time(现代Java日期和时间API)。

如您所见,上面没有使用设备时区。 如果仍然需要此功能:

    ZoneId deviceTimeZone = ZoneId.systemDefault();
    System.out.println(deviceTimeZone);

输出示例:

亚洲/迪拜

问题:我可以在Android上使用java.time吗?

是的, java.time在较新和较旧的Android设备上java.time正常运行。 它至少需要Java 6

  • 在Java 8和更高版本以及更新的Android设备中(有人告诉我API级别为26),内置了现代API。
  • 在Java 6和7中,获取ThreeTen Backport,即新类的Backport(JSR 310的ThreeTen;请参见底部的链接)。
  • 在较旧的Android上,请使用Android版本的ThreeTen Backport。 它称为ThreeTenABP。 并确保使用子包从org.threeten.bp导入日期和时间类。

链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM