0

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

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

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

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

任何示例,可能不是我回答的特定解决方案,都会有所帮助。

谢谢

4

2 回答 2

2

不,您根本不需要创建一个IFormatProvider。不变的文化对此很好(假设月份名称始终为英文)。您可以只使用DateTime.ParseExact, 传入适当的自定义格式字符串 (引用文字字符,在它们周围加上撇号或在它们之前加上反斜杠):

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

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

于 2015-03-24T19:21:43.087 回答
2

你可以DateTime.ParseExact像这样使用:

DateTime dt = DateTime.ParseExact("2015\\Mar\\24\\13_32_09\\", 
                                  @"yyyy\\MMM\\dd\\HH_mm_ss\\", 
                                  CultureInfo.InvariantCulture);
于 2015-03-24T19:23:53.173 回答