Win10 繁中 (zh-tw) 內有三種日曆可以選擇,預設為西曆 (中文),被我切換至西曆 (英文)
西曆 (中文) VS 西曆 (英文),剛好差異在星期文字顯示
C# CultureInfo zh-tw 有三種日曆清單可以使用,剛好對應 Windows 內可使用日曆,分別為
- GregorianCalendar (Localized) 為預設值
- TaiwanCalendar
- GregorianCalendar (USEnglish)
可以透過 CultureInfo.OptionalCalendars 屬性來取得
using System;
using System.Globalization;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
CultureInfo ci = new CultureInfo("zh-tw");
// 顯示 zh-tw 內的日曆
Console.WriteLine("顯示 zh-tw 文化特性日曆清單");
foreach (Calendar calendar in ci.OptionalCalendars)
{
if (calendar.GetType() == typeof(GregorianCalendar))
{
GregorianCalendar gregorianCalendar = (GregorianCalendar)calendar;
Console.WriteLine($" {calendar} ({gregorianCalendar.CalendarType})");
}
else
{
Console.WriteLine($" {calendar}");
}
}
Console.WriteLine("");
Console.WriteLine("各日曆星期表示");
// 指定西曆 (中文)
ci.DateTimeFormat.Calendar = new GregorianCalendar() { CalendarType = GregorianCalendarTypes.Localized };
Console.WriteLine($" 西曆(中文):{ci.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek)}");
// 指定中華民國曆
ci.DateTimeFormat.Calendar = new TaiwanCalendar();
Console.WriteLine($" 中華民國曆:{ci.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek)}");
// 指定西曆 (英文)
ci.DateTimeFormat.Calendar = new GregorianCalendar() { CalendarType = GregorianCalendarTypes.USEnglish };
Console.WriteLine($" 西曆(英文):{ci.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek)}");
}
}
}
zh-tw 的 CultureInfo.DateTimeFormat.Calendar 只接受上述三種日曆,故意塞農民曆 TaiwanLunisolarCalendar 進去,會拋出 ArgmentOutOfRangeException
沒有留言:
張貼留言