如何在LocalDateTime中使用Locale实现星期几的本地化显示
问题原因
你当前代码返回的是java.time.DayOfWeek枚举类型,它的默认toString()方法输出的是枚举常量的固定英文名称,没有关联Locale配置,因此无论系统语言是什么都会返回英文结果。
修正方案
要输出对应Locale语言的星期几文本,调用DayOfWeek自带的getDisplayName方法指定语言即可,修改后的扩展函数如下:
import java.time.LocalDateTime import java.time.ZoneOffset import java.time.format.TextStyle import java.util.Locale private fun WeatherList.getDayOfWeek(locale: Locale = Locale.getDefault()): String { val dayOfWeek = LocalDateTime.ofEpochSecond(dt.toLong(), 0, ZoneOffset.UTC) .toLocalDate() .dayOfWeek // TextStyle可按需调整:FULL输出全称(如「星期一」/「Monday」),SHORT输出短称(如「周一」/「Mon」) return dayOfWeek.getDisplayName(TextStyle.FULL, locale) }
补充说明
- 默认使用
Locale.getDefault()会自动匹配设备当前系统语言,输出对应语言的星期文本 - 如需强制指定输出语言,调用时传入对应Locale即可,比如强制输出中文:
weatherList.getDayOfWeek(Locale.CHINA) - 如果你需要匹配设备本地时区的星期,而非UTC时区的结果,将
ZoneOffset.UTC替换为ZoneId.systemDefault()即可
内容的提问来源于stack exchange,提问作者SoulReaver313
相关产品推荐
相关产品推荐

