适配手机本地化的星期索引获取方法问询
适配本地化的星期索引获取方案
原代码仅适配以周一为周起始的地区,要实现根据设备本地化自动返回对应0-6索引(周一起始地区:0=周一/6=周日;周日起始地区:0=周日/6=周六),可以借助Java时间API中的WeekFields类处理本地化周规则,具体实现如下:
import java.time.LocalDate import java.time.temporal.WeekFields import java.util.Locale fun getLocalizedDayOfWeekIndex(date: LocalDate): Int { // 获取当前设备本地化对应的周规则 val localWeekFields = WeekFields.of(Locale.getDefault()) // 按本地化规则获取日期在周内的序号(1=周起始日,7=周最后一天) val localizedDayNumber = date.get(localWeekFields.dayOfWeek()) // 转换为0起始的索引 return localizedDayNumber - 1 }
代码说明:
WeekFields.of(Locale.getDefault()):自动读取设备当前本地化设置,匹配对应地区的周起始规则。localWeekFields.dayOfWeek():返回的序号会贴合本地化习惯——比如美国地区周日为1,周六为7;欧洲多数地区周一为1,周日为7。- 减1操作后直接得到0-6的索引,完美适配两种周起始场景:
- 周一为起始的地区:0对应周一,6对应周日
- 周日为起始的地区:0对应周日,6对应周六
内容的提问来源于stack exchange,提问作者SkAppCoding
相关产品推荐
相关产品推荐

