kod*_*bot -2 c# regex datetime
下面列出了已知的格式
dd/mm/yyyy (01/01/2015)
d/m/yyyy (1/1/2015)
dd/mm/yy (01/01/15)
d/m/yy (1/1/15)
Run Code Online (Sandbox Code Playgroud)
其他变体将破折号( - ),点(.)或空格作为字段分隔符.
我正在考虑为每个模式创建一个正则表达式以保持其可维护性,但不确定是否有更好的解决方案.请分享是否有更好的解决方案.
更新: 日期是大文本的一部分,在从文本中提取潜在的日期列表之前,我无法使用DateTime.TryParseExact.
我不知道正则表达式,但DateTime.TryParseExact
有一个重载,它将格式作为字符串数组.
您可以轻松提供所有格式,并尝试将字符串与其中一种匹配.
顺便说一句,mm
说明符是几分钟,如果你试图提及几个月,MM
说明符是几个月.
string s = "";
var formats = new string[]
{
"dd/MM/yyyy",
"d/M/yyyy",
"dd/mm/yy",
"d/m/yy",
"dd-MM-yyyy",
"d-M-yyyy",
"dd-MM-yy",
"d-M-yy",
"dd.MM.yyyy",
"d.M.yyyy",
"dd.MM.yy",
"d.M.yy",
"dd MM yyyy",
"d M yyyy",
"dd MM yy",
"d M yy",
};
DateTime dt;
if (DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
// Your string is matched one of first successfull match
}
Run Code Online (Sandbox Code Playgroud)