demoshop

demo, trying to be the best_

將西元轉換為民國年是台灣開發者經常遇到的問題,在這之前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 星期六


回應討論