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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:24:03