返回UTC时间的LocalDateTime和DateTimeZone.getDefault

时间:2018-02-28 15:05:51

标签: android datetime timezone jodatime

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

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

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

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

1 个答案:

答案 0 :(得分:0)

如果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的默认时区,因此在这样做之前,请考虑这是否是您需要的。