ToString("ddd") 不适用于缩写为 3 个字符的 DayofWeek

ToString("ddd") does not work for DayofWeek abbreviated to 3 characters

我想简单地获取星期几的 3 个字母的首字母缩写词。

Monday = MON
Tuesday = TUE
and so on.

我试过了,但出现错误。

string wsDoW = DateTime.Today.DayOfWeek.ToString("ddd");

对我来说唯一的解决办法是……

string wsDoW = DateTime.Today.DayOfWeek.ToString().ToUpper().Substring(0,3);

错误是...

Format String can be only "G", "g", "X", "x", "F", "f", "D" or "d".

怎么回事?

删除 DayOfWeek 部分,您的 format specifier 将正常工作。

string wsDoW = DateTime.Today.ToString("ddd");

这是由于 System.DateTimeSystem.DayOfWeek 之间的 ToString() 实现不同所致。

DateTime class 中的 ToString 实现以 here 结束,它正在测试更多的格式说明符。

DayOfWeek 上调用的 ToString 实现在 Enum class 中,它只检查 few format specifiers,并抛出异常如果不是其中之一。