我有一个从DateTime标记创建的文件路径:
"C:\\Logs\\Tests\\2015\\Mar\\24\\13_32_09\"
现在我正在尝试将文件路径转换回DateTime对象。
使用Regex,我可以轻松删除"C:\\Logs\\Tests\"
,但现在我假设我需要提供 IFormtProvider 的实现,以将2015\\Mar\\24\\13_32_09\
转换为 DateTime 对象,但我没有提到任何类似的例子,通常如何做。
任何一个例子,可能不是我的答案的特殊解决方案,会有所帮助。
由于
答案 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);