demoshop

NEWS

demo, trying to be the best.

站內搜尋載入中...

擴充 DateTime 轉換顯示民國年

  • 3226
  • 0

將西元轉換為民國年是台灣開發者經常遇到的問題,在這之前demo都是很自然的把年份-1911拿達成,但客戶要求顯示的日期需要有星期,因為減了1911年星期會相差一天,於是就乾脆直接擴充 DataTime 作一個轉換民國年的擴充方法。

            /// <summary>
            /// 轉換為民國年
            /// </summary>
            ///<param name="format">標準格式化語法</param>
            /// <returns></returns>
            static public string ChangeTaiwanCalendar(this DateTime x, string format)
            {
                DateTime now = x;
                TaiwanCalendar tc = new TaiwanCalendar();
                Regex regex = new System.Text.RegularExpressions.Regex(@"[yY]+");
                format = regex.Replace(format, tc.GetYear(x).ToString("000"));
                return x.ToString(format);
            }
    

    使用方式相當的直覺

    DateTime.Now.ChangeTaiwanCalendar("yyyy-MM-dd");
    

    就會顯示099-01-15

    看Code就知道傳入在多的y也沒有用...因為民國一百年就要到了,所以預設的年位都是三位數,至於後面想怎麼改就是都可以的。


    <%=DateTime.Now.ChangeTaiwanCalendar("yyyy-MM-dd ddd") %>
    

    就會顯示 099-01-16 星期六