Get date from device and convert it to GMT+4

牧云@^-^@ 提交于 2020-01-06 07:21:13

问题


I am trying to find the timezone of the android phone. Because I want to get the date object but I want in GMT+4 format. Every other answer I saw converts the time coming from an API request(whose timezone is known). How can I accomplish this?

Other approach may be converting the GMT+4 time that comes to me from server to the local time of my device.


回答1:


Best to use a real time zone rather than just an offset of +04. For example:

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

This snippet just output:

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

Please substitute your own time zone. If you do insist on GMT+4, use ZoneOffset.ofHours(4).

The old Date class cannot hold an offset or time zone, but the modern OffsetDateTime does, as the name says. The Date class is also poorly designed, so do consider using java.time, the modern Java date and time API.

As you see, the above doesn’t use the device time zone. If you need this anyway:

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

Example output:

Asia/Dubai

Question: Can I use java.time on Android?

Yes, java.time works nicely on older and newer Android devices. It just requires at least Java 6.

  • In Java 8 and later and on newer Android devices (from API level 26, I’m told) the modern API comes built-in.
  • In Java 6 and 7 get the ThreeTen Backport, the backport of the new classes (ThreeTen for JSR 310; see the links at the bottom).
  • On (older) Android use the Android edition of ThreeTen Backport. It’s called ThreeTenABP. And make sure you import the date and time classes from org.threeten.bp with subpackages.

Links

  • Oracle tutorial: Date Time explaining how to use java.time.
  • Java Specification Request (JSR) 310, where java.time was first described.
  • ThreeTen Backport project, the backport of java.time to Java 6 and 7 (ThreeTen for JSR-310).
  • ThreeTenABP, Android edition of ThreeTen Backport
  • Question: How to use ThreeTenABP in Android Project, with a very thorough explanation.


来源:https://stackoverflow.com/questions/52316395/get-date-from-device-and-convert-it-to-gmt4

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!