[C#] DateTime輸出民國年
最近在專案中剛好有遇到了顯示日期時需要顯示民國年,
就利用Extension Method的方法,替DateTime寫了一個輸出民國年的擴充
{
public static string ToTaiwanLongDateString(this DateTime datetime)
{
return datetime.ToTaiwanString("yyy年MM月dd日");
}
public static string ToTaiwanString(this DateTime datetime, string format)
{
CultureInfo info = new CultureInfo("zh-TW");
TaiwanCalendar calendar = new TaiwanCalendar();
info.DateTimeFormat.Calendar = calendar;
string tmpString;
if (datetime.Year < 1912)
{
int offsetYear = 1912 - datetime.Year;
datetime = datetime.AddYears(offsetYear * 2 - 1);
tmpString = datetime.ToString(format, info);
tmpString = "民國前" + tmpString;
}
else
{
tmpString = datetime.ToString(format, info);
}
return tmpString;
}
}
在這邊,主要的核心是一個ToTaiwanString的function,
它可以接受format來決定輸出的格式,
比較特別的是對民國前做了一個判斷,
如果是在1911年之前的日期,會做處理之後顯示 (如民國前1年06月04日),
另外就是這邊只實做了ToTaiwanLongDateString的格式 (yyy年MM月dd日),
大家可以針對這兩個部份依照自己的需求修改或擴充囉
接下來讓我們看看使用的Sample
using System.Globalization;
public class DatetimeTest{
public static void Main() {
Console.WriteLine(new DateTime(2008,6,7).ToTaiwanLongDateString());
Console.WriteLine(new DateTime(1910,6,7).ToTaiwanLongDateString());
}
}
輸出結果:
民國97年06月07日
民國前02年06月07日