[C#]西元年轉民國年 別用.AddYears(-1911)

  • 17105
  • 0
  • C#
  • 2012-10-10

[C#]西元年轉民國年 別用.AddYears(-1911)

以前轉成民國年 都常常會使用 .AddYears(-1911)

這種偷懶的做法,不過今天用2012/2/29寫範例的時候,轉出來 居然是101/2/28

根據我的推理,是因為西元101年 的2月 只有28 天

所以在此我把年份改成用減的,這樣 只減年份,月日不動,這樣就不會算錯了

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string strdate = "2012/2/29";
            DateTime cdate = DateTime.Parse(strdate); 
            Console.WriteLine("西元年:"+cdate.ToString("yyyy/MM/dd"));
            Console.WriteLine("民國年:"+Convert.ToInt16(cdate.AddYears(-1911).Year) + cdate.ToString("/MM/dd"));
            cdate = cdate.AddYears(-1911);//用我你就會算錯
            Console.WriteLine("民國年:" + cdate.ToString("yyy/MM/dd"));//101/2/28
            Console.Read(); 
        } 
    }
}


如有錯誤 歡迎指正