文件路径的日期时间格式提供程序
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);
我有一个从日期时间戳创建的文件路径:
"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);