[C#] DateTime輸出民國年

  • 15332
  • 0

[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日