2015年7月21日 星期二

C#民國年西元年轉換

西元年轉民國年時,如果使用addyear(-1911)的方式,會有閏年的問題,例如2012/2/29使用addyear(-1911)會變成101/2/28,使用字串拆解的方式又過於冗長, NET Framework有提供方便的轉換方式,來解決這問題

西元年轉民國年
System.Globalization.CultureInfo tc = new System.Globalization.CultureInfo("zh-TW"); tc.DateTimeFormat.Calendar = new System.Globalization.TaiwanCalendar();
DateTime dt = DateTime.Now;
Response.Write(dt.ToString(tc));


西元年日期驗證
 DateTime dt = DateTime.Now;
 DateTime.TryParse("2015/7/21", out dt) ;


民國年轉西元年 
System.Globalization.CultureInfo tc = new System.Globalization.CultureInfo("zh-TW"); tc.DateTimeFormat.Calendar = new System.Globalization.TaiwanCalendar(); Response.Write(DateTime.Parse("104/7/21",tc).Date.ToString("d"));



民國年日期驗證
System.Globalization.CultureInfo tc = new System.Globalization.CultureInfo("zh-TW"); tc.DateTimeFormat.Calendar = new System.Globalization.TaiwanCalendar();
DateTime result;
try
 {
     result = DateTime.ParseExact("104/7/21", "d", tc);
     Response.Write("Ok");
 }
   catch (FormatException)
{
   Response.Write("Wrong");
 }