从字符串中提取yyyy-MM-dd hhmmss格式的日期
本文关键字:格式 日期 hhmmss yyyy-MM-dd 字符串 提取 | 更新日期: 2023-09-27 17:50:59
我有以下字符串
''server'f$'direct1'205486060518032015-05-28 150931.rtf
包含yyyy-MM-dd hhmmss
现在我已经设法使用正则表达式
提取该字符串Regex rgx = new Regex(@"'d{4}-'d{2}-'d{2} 'd{6}");
di = new DirectoryInfo(Location);
var fileList = di.GetFiles("*.*", SearchOption.TopDirectoryOnly);
foreach (FileInfo fi in fileList)
{
EngineEvent(this, new EngineEventProperties(String.Format("Filename: {0}", fi.FullName)));
DateTime fileDate = DateTime.Now;
Match mat = rgx.Match(fi.FullName);
.
.
.
}
匹配包含预期字符串'2015-05-28 150931'
但是,当我尝试使用以下代码将其转换为DateTime
时if (DateTime.TryParseExact(fi.FullName, "yyyy-MM-dd hhmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out fileDate))
{
Console.WriteLine("Date : {0}", fileDate);
};
返回false,使用ParseExact失败,说明字符串不包含日期。
那么如何进行转换呢?
使用此格式:
"yyyy-MM-dd HHmmss"
HH
为24小时格式,hh
为12小时格式。15
不适合12小时的时间格式,因此失败。
给它一个机会:
DateTime temp;
if (DateTime.TryParseExact("2015-05-28 150931", "yyyy-MM-dd HHmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
{
Console.WriteLine("Date : {0}", temp);
};
总是好的书签自定义日期和时间格式字符串页面!
您正在尝试解析全名,而不仅仅是匹配的部分。试着
Match mat = rgx.Match(fi.FullName);
if (mat.success)
{
if (DateTime.TryParseExact(mat.Value, "yyyy-MM-dd HHmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out fileDate))
{
Console.WriteLine("Date : {0}", fileDate);
};
}
else
{
// no natch found...
}
还将小时匹配更改为24小时(HH
),由@Jonesy