DateTime.ParseExact(),時間轉換,民國與西元的轉換。
但是最近使用者在換了一份新表格以後突然說:我們輸入生日的時候,遇到使用者輸入的是民國的生日,這樣每次在輸入時,我們都要自己換算,不小心還會算錯,可不可以改成輸入民國生日就好?
但是系統的運算都是以西元年為主,使用者的需求又不能不重視,因為新表格已經印了,且表格上的日期格式是民國年(沒參與到實際文件表格的設計,這部分跟系統原先的架構脫鉤了。)
所以只好在使用者輸入後將民國年轉換成西元年後儲存!!!當使用者查詢頁面時,在將西元年轉換回去民國年。
初期一開始沒有想太多,就直接將民國年轉成西元,因此比照西元格式yyyyMMdd(不要有分隔符號),要求輸入年月日,乍看之下沒有甚麼問題。
等測試時,才發現完全不行。
691010
6442
1011121
才發現,這要怎麼調整啊???
不管怎麼轉換,都會出現 ”字串未被辨認為有效的 DateTime。”
只好利用限定格式來處理,要求輸入一律採用輸入採用 yyyMMdd模式。轉為時間格式或是字串。
string x = "1011121";
DateTime dt = DateTime.ParseExact(x, "yyyMMdd", CultureInfo.InvariantCulture).AddYears(1911);
string x1 = "0640402";
DateTime dt1 = DateTime.ParseExact(x, "yyyMMdd", CultureInfo.InvariantCulture).AddYears(1911);
或是利用擴充方法也可以。
//擴充方法
public static string ToSimpleUSDate(this DateTime dtx)
{
return string.Format("{0}{1}{2}", (Int32.Parse(dtx.Year.ToString())+1911), dtx.Month, dtx.Day);
}
//執行
string x = "1041021";
DateTime dt = DateTime.ParseExact(x, "yyyMMdd", CultureInfo.InvariantCulture);
string aa = dt.ToSimpleUSDate();
參考來源:感謝前輩們的說明與文件範例,非常謝謝!!!
mrkt 的程式學習筆記 基本題 - C# 西元年轉換取得民國年格式字串
瓶水相逢 - 艾小克 威力強大的DateTime.ParseExact()
黑暗執行緒 TIPS-.NET DateTime Formating
水滴可成涓流,涓流可成湖泊大海。
汲取累積知識,將知識堆積成常識;將常識探究成學識;將學識簡化為知識;授人自省。