kotlin 获取当前年

xzbxzb 安卓 2025-12-18 24 0
在 Kotlin 中获取当前年份有多种方式,以下是最常用的几种实现方案,适配不同场景(如 Java 8+ 新时间 API、传统 Calendar 类):

方案 1:推荐(Java 8+ 新时间 API,线程安全)

使用 java.time 包下的 YearLocalDate 等类,是 Kotlin 中获取年份的首选方式(Android API 26+ 原生支持,低版本可通过 desugar 或 ThreeTenABP 兼容)。
import java.time.LocalDate
import java.time.Year
import java.time.ZoneId

fun getCurrentYear(): Int {
    // 方式 1:直接获取当前年份(系统默认时区)
    val year1 = Year.now().value

    // 方式 2:通过 LocalDate 获取(更灵活,可扩展获取月/日)
    val year2 = LocalDate.now().year

    // 方式 3:指定时区(如 UTC、东八区)
    val year3 = LocalDate.now(ZoneId.of("Asia/Shanghai")).year

    return year1 // 返回任意一种即可
}

// 调用示例
fun main() {
    val currentYear = getCurrentYear()
    println("当前年份:$currentYear") // 输出示例:2025
}

方案 2:兼容低版本(传统 Calendar 类)

如果需要兼容 Android 低版本(API < 26)或旧版 Java 环境,可使用 java.util.Calendar
import java.util.Calendar

fun getCurrentYearCompat(): Int {
    val calendar = Calendar.getInstance()
    return calendar.get(Calendar.YEAR) // 获取当前年份
}

// 调用示例
fun main() {
    val year = getCurrentYearCompat()
    println("当前年份(兼容版):$year")
}

方案 3:简化写法(一行代码)

如果只需快速获取,可直接简写:
// Java 8+ 简写
val currentYear = LocalDate.now().year

// 兼容版简写
val currentYearCompat = Calendar.getInstance().get(Calendar.YEAR)

关键说明:

  1. 时区问题now() 无参时使用系统默认时区,如需统一时区(如 UTC),建议显式指定 ZoneId(如 ZoneId.of("UTC"))。

  2. Android 兼容

    • API 26+:直接使用 java.time 包。

    • API < 26:添加 ThreeTenABP 依赖(com.jakewharton.threetenabp:threetenabp:1.4.4),然后使用 org.threeten.bp 包下的对应类(如 org.threeten.bp.LocalDate)。

  1. 线程安全java.time 类是不可变且线程安全的,而 Calendar 是线程不安全的,多线程场景优先选前者。

完整示例(Android 兼容版)

// 如需兼容 Android API < 26,先添加 ThreeTenABP 依赖,然后:
import org.threeten.bp.LocalDate
import org.threeten.bp.ZoneId

fun getCurrentYearAndroid(): Int {
    return LocalDate.now(ZoneId.systemDefault()).year
}
以上方案可根据你的运行环境(Java 版本 / Android API 级别)选择,优先使用 java.time 系列 API,代码更简洁、安全。


 您阅读本篇文章共花了: 

版权声明

本文章如果涉及侵权,请联系我。
部分文章系本人原创未经许可,不得转载。

喜欢0发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址