在字符串中搜索与文化相关的日期

时间:2013-06-06 10:23:22

标签: c# culture

我需要在字符串中搜索并解析日期时间(基于当前文化格式化)。

目前我能想到的最好的是:

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;

有更聪明的方法吗?

2 个答案:

答案 0 :(得分:0)

更好的方法是使用公共分隔符(例如示例中的空格和;)拆分字符串,然后尝试解析每个部分(和/或将每两个部分连接在一起)。

如果您知道日期始终位于拆分中的特定位置,则可以消除循环并直接获取日期字符串。

答案 1 :(得分:0)

听起来很难。可能是正则表达式的工作。鉴于你说

  

根据当前文化格式化

每个文化都需要一个正则表达式,并根据文化集选择正确的表达式。

或者,如果您知道周围的文本是什么,即("Time is {0}; all's well")部分,那么您可以先从字符串中删除它,然后尝试

DateTime.TryParse(dateOnlyString, currentCulture, ...)