filepath的DateTime格式提供程序

时间:2015-03-24 19:19:50

标签: c# .net datetime iformatprovider

我有一个从DateTime标记创建的文件路径:

"C:\\Logs\\Tests\\2015\\Mar\\24\\13_32_09\"

现在我正在尝试将文件路径转换回DateTime对象。

使用Regex,我可以轻松删除"C:\\Logs\\Tests\",但现在我假设我需要提供 IFormtProvider 的实现,以将2015\\Mar\\24\\13_32_09\转换为 DateTime 对象,但我没有提到任何类似的例子,通常如何做。

任何一个例子,可能不是我的答案的特殊解决方案,会有所帮助。

由于

2 个答案:

答案 0 :(得分:2)

不,您根本不需要创建IFormatProvider。不变的文化对此很好(假设月份名称总是英文)。您可以使用DateTime.ParseExact,传入适当的custom format string(引用文字字符,或者在它们周围加上撇号或者在它们之前使用反斜杠):

var dateTime = DateTime.ParseExact(
    text,
    @"yyyy'\'MMM'\'dd'\'HH'_'mm'_'ss'\'",
    CultureInfo.InvariantCulture);

请注意,这假设路径确实 使用反斜杠...它不会按原样在Unix上工作。 (您可能希望首先规范化目录分隔符。)

答案 1 :(得分:2)

您可以使用DateTime.ParseExact之类的:

DateTime dt = DateTime.ParseExact("2015\\Mar\\24\\13_32_09\\", 
                                  @"yyyy\\MMM\\dd\\HH_mm_ss\\", 
                                  CultureInfo.InvariantCulture);