擴充 DateTime 轉換顯示民國年
- 2010-01-16
- 34057
- 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 星期六









Roslyn 魔法工坊:打造你的 Source Generator [2025-12-20]開課 共7H
回應討論