You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin:按系统本地化排序星期名称列表

根据本地化设置排序星期名称列表(Kotlin)

要实现根据系统本地化设置调整星期列表的起始顺序,核心是获取当前地区的一周起始日,再重新排列星期名称。以下是完整实现:

import java.util.Calendar
import java.util.Locale
import java.time.DayOfWeek
import java.time.format.TextStyle

fun getLocalizedShortWeekDays(): List<String> {
    val locale = Locale.getDefault()
    // 建立星期枚举与本地化短名称的映射
    val dayNameMap = DayOfWeek.entries.associateWith { 
        it.getDisplayName(TextStyle.SHORT, locale) 
    }

    // 获取当前本地化设置的一周起始日
    val firstDay = when (Calendar.getInstance(locale).firstDayOfWeek) {
        Calendar.SUNDAY -> DayOfWeek.SUNDAY
        else -> DayOfWeek.MONDAY // 多数地区默认周一,兜底处理
    }

    // 生成从起始日开始的有序星期列表
    return generateSequence(firstDay) { it.plus(1) }
        .take(7)
        .map { dayNameMap[it]!! }
        .toList()
}

关键说明:

  • 获取本地化起始日:通过Calendar.getInstance(locale).firstDayOfWeek获取当前地区的一周起始日,转换为DayOfWeek枚举值。
  • 自动循环排序:利用DayOfWeek.plus(1)的自动循环特性(例如SUNDAY.plus(1)会返回MONDAY),通过generateSequence生成从起始日开始的连续7个星期项。
  • 映射复用:用associateWith建立枚举与名称的映射,避免重复调用getDisplayName,提升效率。

内容的提问来源于stack exchange,提问作者SkAppCoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:05:58