Android&Kotlin——时区的获取优化

在之前的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类。