如何从 Android Java 日期和日历转换为三个 LocalDateTime
Calendar calTime = Calendar.getInstance();
Date date = calTime.getTime();
LocalDateTime ldt = Instant.ofEpochSecond(date.getTime()/1000)
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
固定的!
如何从 Android Java 日期和日历转换为三个 LocalDateTime
Calendar calTime = Calendar.getInstance();
Date date = calTime.getTime();
LocalDateTime ldt = Instant.ofEpochSecond(date.getTime()/1000)
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
固定的!
您的解决方案不是最佳的。
LocalDateTime
没有区域/偏移量首先,您的使用LocalDateTime
几乎可以肯定是不合适的。您正在丢弃有关时区或偏移量的有价值信息。该LocalDateTime
课程故意没有时区或与 UTC 偏移的概念,因此不代表实际时刻,仅代表 26-27 小时左右范围内可能时刻的粗略概念。
而是在处理时间线上的实际时刻时使用Instant
,OffsetDateTime
和。ZonedDateTime
我们仅在以下情况下使用LocalDateTime
:
LocalDateTime
作为一个呈现给用户。ZonedDateTime
DateTimeUtils
用于转换接下来,您的转换数学是不必要的。
该类DateTimeUtils
提供了用于转换的实用方法。
ZonedDateTime zdt = DateTimeUtils.toZonedDateTime( myCalendar ) ;
或者……</p>
Instant instant = DateTimeUtils.toInstant( myCalendar ) ;
PS 不要在问题的正文中回答您的问题。相反,发布一个实际的答案,然后接受它以关闭问题。
提示:对于那些想在 Android中使用ThreeTen-Backport 的人,请参阅ThreeTenABP项目。并查看如何在 Android 项目中使用 ThreeTenABP。