DateTime.DayOfWeek 返回的是 DayOfWeek 枚举值,本质为整数(0=Sunday…6=Saturday),非中文;ToString() 默认输出英文名,需用 ToString("dddd", new CultureInfo("zh-CN")) 或查表映射(如 string[] Weekdays = {"周日","周一",...})才能稳定输出中文星期。

DateTime.DayOfWeek 返回的是数字还是中文?

返回的是 DayOfWeek 枚举值,本质是整数(0=Sunday,1=Monday…6=Saturday),不是字符串也不是中文。直接 .ToString() 会输出英文名(如 "Monday"),不是你想要的“周一”或“星期一”。

用 ToString("dddd") 能否显示“星期一”?

可以,但依赖当前线程的 CultureInfo。默认情况下,.NET 运行时使用系统区域设置,中文 Windows 通常能输出“星期一”,但服务器部署时可能变成英文。

想固定输出“周X”(如“周一”)该怎么做?

最稳的方式是查表映射,避开文化依赖。枚举值确定、范围小,查数组比走本地化更轻量、可控。

ToString("d") 和 "dddd" 容易混淆的点

"d" 是短日期格式(如 "2024/5/20"),和星期完全无关;"dddd" 才是完整星期名称。很多人搜“星期几”却试 ToString("d"),结果一脸懵。

文化设置这层容易被当成“理所当然”,但实际部署时线程文化经常和开发机不一致,查表映射虽然多写一行,反而省去排查环境问题的时间。
本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。