在之前的Android项目开发当中,我常用Java的TimeZone类来获取用户的当前时区。
kotlin
import java.util.TimeZone
val timeZoneId = TimeZone.getDefault().id
我突发奇想Kotlin有没有更优解的获取时区的类,我发现真的有。优化方式:
kotlin
import java.time.ZoneId
val zoneId = ZoneId.systemDefault().id
在Android API 26 (Android 8.0)开始,Google推荐使用java.time包,它比旧的TimeZone类更易用、更安全。使用这个类的理由:
- 更现代化:它是
Java 8引入的时间 API 的一部分,专门为了取代旧的TimeZone类。 - 不可变性:
ZoneId是不可变的,这在多线程环境下更安全。 - 语义清晰:
ZoneId.systemDefault()明确地表示获取的是系统设置的时区,代码可读性更高。
如果你的项目minSdk ≥ 26,我更建议使用ZoneId类。