文件路径的日期时间格式提供程序

DateTime Format provider for filepath

我有一个从日期时间戳创建的文件路径:

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

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

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

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

谢谢

不,您根本不需要创建 IFormatProvider。不变文化对此很好(假设月份名称始终为英文)。您可以只使用 DateTime.ParseExact, passing in the appropriate custom format string(引用文字字符,在它们周围加上撇号或在它们之前加上反斜杠):

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

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

您可以使用 DateTime.ParseExact 如:

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