DateTime輸出民國年

  • 2283
  • 0
  • c#
  • 2014-03-28

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 }
  

 

在這邊,主要的核心是一個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 }
  

輸出結果:

民國97年06月07日
民國前02年06月07日