C# 在字符串中搜索区域性相关日期

C# 在字符串中搜索区域性相关日期,c#,culture,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; leng

我需要搜索并解析字符串中的日期时间(基于当前区域性格式化)

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

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;
string text=string.Format(“时间是{0};一切正常”,DateTime.Now);
DateTime日期=新的日期时间();
对于(int start=0;start0;length--)
if(DateTime.TryParse(text.Substring(开始,长度),结束日期))
返回日期;

有更聪明的方法吗?

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


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

听起来很难。可能是正则表达式的工作。考虑到你说的

基于当前区域性格式化

每个区域性都需要一个正则表达式,并根据区域性集选择正确的正则表达式

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

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

你对你要寻找的字符串了解更多吗?或者它应该是任意字符串?如果不了解字符串的结构以及datetime在其中的表示方式,我们就没有什么可研究的了。你的意思是它总是像例子一样(“时间是……”)?