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
相关产品推荐
相关产品推荐

