【发布时间】:2020-06-12 15:12:23
【问题描述】:
我从日志文件中读取了一些日期时间戳,问题是日志文件奇怪地记录了这些时间戳,例如:
“2020061515141112”是它在文件中的样子,代表“2020 06/15 15:14:11.12”
我遇到的问题是我有开始事件和结束事件的日志,我需要解析它们之间的时间段。
我的问题是:
在 C# 应用程序中,如何将字符串 (yyyyMMddHHmmssff) 解析为 DateTime 可以用来在它们之间执行<DateTime.Subtract> 的格式?我对日期时间不是很熟悉,并且很难让 Visual Studio 同意以下内容:
DateTime aDT = DateTime.Parse(aLogDate,"yyyyMddHHmmssff",System.Globalization.DateTimeStyles.None);
符合 (string,IFormatProvider,DateTimeStyle) 的预期格式但参数无效(是格式提供程序吗?)
编辑:我们能够修改日志打印的格式(在某种程度上)以在其日期时间中保留前导零,因此这不再是问题,以上仍有问题)
【问题讨论】:
-
你几乎搞砸了,因为不强制所有内容都使用前导零的 2 位数字意味着你可以有不明确的时间戳,比如 1 月 11 日或 11 月 1 日的“202011115141112”。您必须将字符串格式化为可以通过添加缺少的前导零或分隔符来解析的内容(“天才”首先应该做的事情)
-
是的......我想,但对于这种情况,我们只调查 June10-June13 的 dateTimes,所以我将能够“度过”我们的诊断
-
@Medic3000 最糟糕的是
202011111111是2020 1/1 11:11:11或2020 1/11 1:11:11或2020 11/1 1:11:11 -
@Franck 我们在软件中找到了一个设置,该设置提供了允许在月/小时/日切换前导零的日志,因此我们现在有一个一致的 yyyyMMddHHmmssff 输出来记录。考虑到这一点,最初的问题仍在发挥作用
-
所以假设你有 2 个 DateTime 形式的时间戳,比如 t1 和 t2,你可以从 t2 中减去 t1,得到一个 TimeSpan,比如 d = t2 - t1。然后 d 可以显示为 d.ToString("\\HH\\mm\\ss.ff") 或您想要的。