「結局そのFormatStringで何が出るんじゃい」っていう一覧がどこにもなかったので備忘録
VS2019なのでC#8.x系だと思います。
var formats = new string[] { string.Empty, "G", "X", "F", "D" };
foreach (var f in formats)
{
Console.WriteLine($"FormatString = {f}");
Console.WriteLine($"Monday = {DayOfWeek.Monday.ToString(f)}");
Console.WriteLine($"Tuesday = {DayOfWeek.Tuesday.ToString(f)}");
Console.WriteLine($"Wednesday = {DayOfWeek.Wednesday.ToString(f)}");
Console.WriteLine($"Thursday = {DayOfWeek.Thursday.ToString(f)}");
Console.WriteLine($"Friday = {DayOfWeek.Friday.ToString(f)}");
Console.WriteLine($"Saturday = {DayOfWeek.Saturday.ToString(f)}");
Console.WriteLine($"Sunday = {DayOfWeek.Sunday.ToString(f)}");
Console.WriteLine();
}
FormatString =
Monday = Monday
Tuesday = Tuesday
Wednesday = Wednesday
Thursday = Thursday
Friday = Friday
Saturday = Saturday
Sunday = Sunday
FormatString = G
Monday = Monday
Tuesday = Tuesday
Wednesday = Wednesday
Thursday = Thursday
Friday = Friday
Saturday = Saturday
Sunday = Sunday
FormatString = X
Monday = 00000001
Tuesday = 00000002
Wednesday = 00000003
Thursday = 00000004
Friday = 00000005
Saturday = 00000006
Sunday = 00000000
FormatString = F
Monday = Monday
Tuesday = Tuesday
Wednesday = Wednesday
Thursday = Thursday
Friday = Friday
Saturday = Saturday
Sunday = Sunday
FormatString = D
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
Sunday = 0
Enum.ToString()はこういうことらしい
列挙型形式文字列
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/enumeration-format-strings
何も指定しないとG
と同値になる。
G
とF
の違いが分からないが、EnumにFlags属性があると何か変わるらしい。
(公式の例示が微妙で分からないが、少なくともDayOfWeekには関係が無さそう)
D
はint、X
はbyte。
「何曜日」が欲しければ、DateTime.ToString(String)
を指定するか、CultureInfo.DateTimeFormat.GetDayName(DayOfWeek)
を使えばよさそう。
日付から取得するときは前者、一覧が欲しければ後者がいいと思う。凝らないなら素直に手打ちする。
var ci = new CultureInfo("ja-JP");
Console.WriteLine($"CultureInfoName = {ci.Name}");
Console.WriteLine($"{DateTime.Now.ToString("yyyy/MM/dd ddd dddd")}");
Console.WriteLine($"Monday = {ci.DateTimeFormat.GetDayName(DayOfWeek.Monday)}");
Console.WriteLine($"Tuesday = {ci.DateTimeFormat.GetDayName(DayOfWeek.Tuesday)}");
Console.WriteLine($"Wednesday = {ci.DateTimeFormat.GetDayName(DayOfWeek.Wednesday)}");
Console.WriteLine($"Thursday = {ci.DateTimeFormat.GetDayName(DayOfWeek.Thursday)}");
Console.WriteLine($"Friday = {ci.DateTimeFormat.GetDayName(DayOfWeek.Friday)}");
Console.WriteLine($"Saturday = {ci.DateTimeFormat.GetDayName(DayOfWeek.Saturday)}");
Console.WriteLine($"Sunday = {ci.DateTimeFormat.GetDayName(DayOfWeek.Sunday)}");
CultureInfoName = ja-JP
2021/02/04 木 木曜日
Monday = 月曜日
Tuesday = 火曜日
Wednesday = 水曜日
Thursday = 木曜日
Friday = 金曜日
Saturday = 土曜日
Sunday = 日曜日