返回UTC时间的LocalDateTime和DateTimeZone.getDefault

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回UTC时间的LocalDateTime和DateTimeZone.getDefault相关的知识,希望对你有一定的参考价值。

我正在尝试设置本地对象的日期时间。这是我的代码:

val date = DateTime() //returns UTC time
val dateTimeZone = DateTimeZone.getDefault() //returns UTC
val localDateTime = LocalDateTime() //returns UTC

我的手机设置设置为自动日期时间,我当前的时区是山区时间。

如何获得我所在时区的当前时间(手机上出现的时间)?

答案

如果DateTimeZone.getDefault()返回“UTC”,那是因为设备的默认时区设置为它,因此除非您指定另一个区域,否则所有类都将引用它。

要获取特定时区的日期和时间,您可以执行以下操作:

val date = DateTime(DateTimeZone.forID("America/Denver"))
val localDateTime = LocalDateTime(DateTimeZone.forID("America/Denver"))

请注意,America / Denver只是one of the many regions that uses Mountain Time。这是因为Joda-Time使用IANA区域名称(格式为区域/城市),因此您必须从此列表中选择相应的最佳名称:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

或者,您也可以更改默认时区:

DateTimeZone.setDefault(DateTimeZone.forID("America/Denver"))

有了这个,只需调用LocalDateTime()DateTime()将使用America / Denver作为默认区域。

但请注意,这将改变整个JVM的默认时区,因此在这样做之前,请考虑这是否是您需要的。

以上是关于返回UTC时间的LocalDateTime和DateTimeZone.getDefault的主要内容,如果未能解决你的问题,请参考以下文章

Mysql将LocalDateTime插入到数据库时时间少了8小时。

Mysql将LocalDateTime插入到数据库时时间少了8小时。

DateTime.UtcNow 协调通用时间(UTC)

DateTime.UtcNow 协调通用时间(UTC)

在数据库中使用Java 8 LocalDate和LocalDateTime进行Hibernate

在时区将 ZonedDateTime 转换为 LocalDateTime