我需要在字符串中搜索并解析日期时间(基于当前文化格式化)。
目前我能想到的最好的是:
string text = String.Format("Time is {0}; all's well", DateTime.Now);
DateTime date = new DateTime();
for (int start = 0; start < text.Length - 1; start++)
for (int length = text.Length - start; length > 0; length--)
if (DateTime.TryParse(text.Substring(start, length), out date))
return date;
有更聪明的方法吗?
答案 0 :(得分:0)
更好的方法是使用公共分隔符(例如示例中的空格和;
)拆分字符串,然后尝试解析每个部分(和/或将每两个部分连接在一起)。
如果您知道日期始终位于拆分中的特定位置,则可以消除循环并直接获取日期字符串。
答案 1 :(得分:0)
听起来很难。可能是正则表达式的工作。鉴于你说
根据当前文化格式化
每个文化都需要一个正则表达式,并根据文化集选择正确的表达式。
或者,如果您知道周围的文本是什么,即("Time is {0}; all's well")
部分,那么您可以先从字符串中删除它,然后尝试
DateTime.TryParse(dateOnlyString, currentCulture, ...)