如何在当地CultureInfo获得DayOfWeek?

Ale*_*gro 1 c# datetime cultureinfo winforms

DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
string day = dt.DayOfWeek.ToString();
day = day.Substring(0, 1).ToUpper();
MessageBox.Show(day); // result is "F"
Run Code Online (Sandbox Code Playgroud)

我怎样才能以当地语言(CultureInfo)获得结果,例如 - 法国,在哪里可以找到用于此目的的语言列表?

Jon*_*eet 6

假设你已经拥有了CultureInfo,你可以使用:

string dayName = dateTime.ToString("dddd", culture);
Run Code Online (Sandbox Code Playgroud)

然后你需要自己拍摄它的第一个字符 - 没有自定义的日期/时间格式.你可以使用ddd缩写日期名,但是这通常是三个字符,而不是一个.

至于文化列表 - 你可以使用CultureInfo.GetCultures.它会因平台而异,并且可能随着时间的推移而变化,甚至可能因.NET版本而异.

顺便说一下,这段代码并不理想:

DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
Run Code Online (Sandbox Code Playgroud)

如果你碰巧把它刚刚在今年年底午夜前,你可以得到"老字号"的一年,但随后1月担任了一个月.您应该评估DateTime.Now(或DateTime.Today)一次,然后使用相同的值两次:

DateTime today = DateTime.Today;
DateTime startOfMonth = new DateTime(today.Year, today.Month, 1);
Run Code Online (Sandbox Code Playgroud)