DateTime輸出民國年(轉貼至自己部落格)
原始文件位置:http://www.dotblogs.com.tw/kirkchen/archive/2009/11/30/12223.aspx
因為有時需要用到,故寫在自己部落格裡,以方便查詢。
最近在專案中剛好有遇到了顯示日期時需要顯示民國年,
就利用Extension Method的方法,替DateTime寫了一個輸出民國年的擴充
01
public static class DateTimeExtensions
02
{
03
public static string ToTaiwanLongDateString(this DateTime datetime)
04
{
05
return datetime.ToTaiwanString("yyy年MM月dd日");
06
}
07
public static string ToTaiwanString(this DateTime datetime, string format)
08
{
09
CultureInfo info = new CultureInfo("zh-TW");
10
TaiwanCalendar calendar = new TaiwanCalendar();
11
info.DateTimeFormat.Calendar = calendar;
12
string tmpString;
13
if (datetime.Year < 1912)
14
{
15
int offsetYear = 1912 - datetime.Year;
16
datetime = datetime.AddYears(offsetYear * 2 - 1);
17
tmpString = datetime.ToString(format, info);
18
tmpString = "民國前" + tmpString;
19
}
20
else
21
{
22
tmpString = datetime.ToString(format, info);
23
}
24
return tmpString;
25
}
26
}
public static class DateTimeExtensions 02
{ 03
public static string ToTaiwanLongDateString(this DateTime datetime) 04
{ 05
return datetime.ToTaiwanString("yyy年MM月dd日"); 06
} 07
public static string ToTaiwanString(this DateTime datetime, string format) 08
{ 09
CultureInfo info = new CultureInfo("zh-TW"); 10
TaiwanCalendar calendar = new TaiwanCalendar(); 11
info.DateTimeFormat.Calendar = calendar; 12
string tmpString; 13
if (datetime.Year < 1912) 14
{ 15
int offsetYear = 1912 - datetime.Year; 16
datetime = datetime.AddYears(offsetYear * 2 - 1); 17
tmpString = datetime.ToString(format, info); 18
tmpString = "民國前" + tmpString; 19
} 20
else 21
{ 22
tmpString = datetime.ToString(format, info); 23
} 24
return tmpString; 25
} 26
}
在這邊,主要的核心是一個ToTaiwanString的function,
它可以接受format來決定輸出的格式,
比較特別的是對民國前做了一個判斷,
如果是在1911年之前的日期,會做處理之後顯示 (如民國前1年06月04日),
另外就是這邊只實做了ToTaiwanLongDateString的格式 (yyy年MM月dd日),
大家可以針對這兩個部份依照自己的需求修改或擴充囉
接下來讓我們看看使用的Sample
01
using System;
02
using System.Globalization;
03
public class DatetimeTest
04
{
05
public static void Main()
06
{
07
Console.WriteLine(new DateTime(2008,6,7).ToTaiwanLongDateString());
08
Console.WriteLine(new DateTime(1910,6,7).ToTaiwanLongDateString());
09
}
10
}
using System; 02
using System.Globalization; 03
public class DatetimeTest04
{ 05
public static void Main() 06
{ 07
Console.WriteLine(new DateTime(2008,6,7).ToTaiwanLongDateString()); 08
Console.WriteLine(new DateTime(1910,6,7).ToTaiwanLongDateString()); 09
} 10
} 輸出結果:
民國97年06月07日
民國前02年06月07日
