**是從專案裡抽出來的,沒有細整理。應用場景是在碼值翻譯的時候,需要把不同格式的時間翻譯一下。我們的專案是匯入zip包,儲存老資料,思路是先去判斷xml檔案裡面的時間是什麼格式的,然後根據具體的格式轉換。docking annotation = field.getannotation(docking.class);
string format = annotation.dateformat();
if (value.trim().length() == 10) else if (value.trim().length() == 8) else if (value.trim().length() == 4) else if (value.trim().length() == 6) else if (value.trim().length() == 19)
date date = dateutil.stringtodateformat(value, format);
field.set(t, date);
public static date stringtodateformat(string date, string format) throws exception[1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])" +
"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|" +
"(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])(0[48]|[2468][048]|[13579][26])|" +
"((0[48]|[2468][048]|[3579][26])00))0229))([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$";
if(pattern.matches(ymdhms, date))
// 精確到日即可,即年月日,格式:yyyymmdd,例如:20161213
string ymd = "^((([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])(((0[13578]|1[02])" +
"(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])" +
"(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))$";
if(pattern.matches(ymd, date))
// 精確到日即可,即年月日,格式:yyyy-mm-dd,例如:2016-12-13
string ymd2 = "^((([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-(((0[13578]|1[02])" +
"-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|" +
"((([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))$";
if(pattern.matches(ymd2, date))
// 校驗時分秒:格式:hhmmss
string hms = "([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$";
if(pattern.matches(hms, date))
// 校驗時分秒:格式:hh-mm-ss
string hms2 = "([0-1]?[0-9]|2[0-3])-([0-5][0-9])-([0-5][0-9])$";
if(pattern.matches(hms2, date))
string hms3 = "([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
if(pattern.matches(hms3, date))
// 校驗 yyyy-mm-dd hh:mm:ss(日期和時間之間有乙個或多個空格)
string defaultformat = "^((([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-" +
"(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|" +
"(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])(0[48]|[2468][048]|[13579][26])|" +
"((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
if(pattern.matches(defaultformat, date))
date date1 = null;
try catch (exception e)
return date1;
}
正則匹配護照格式
美國 英國護照號碼 9 位數字 加拿大護照 2 個字母加 6 個數字 法國護照 2 個數字加 2 個字母加 5 個數字 義大利護照 2 個字母加 7 個數字 西班牙護照 3 個字母加 6 個數字 德國護照 9 個字元,由 2 3 個數字與 6 7 個字母混排,頭尾是字母。或者單純為 9 個數字 de...
Python 正則匹配文字中的時間串
text 現在是北京時間2020 3 16 2020年3月16日 2020.3.16 13 00 re.findall d年 d月 d日 text 2020年3月16日 re.findall d d d text 2020 3 16 re.findall d 年 d 月 d 日 text 2020 ...
時間格式的正規表示式
日期格式yyyy patternsdict.date y d 日期格式yyyy mm patternsdict.date ym d 0 d 1 0 2 日期格式yyyy mm dd patternsdict.date ymd d 0 d 1 0 2 0 d 12 d 3 01 時間格式hh patt...