我正在使用 C# 在本地位置 (C:\temp\log.txt) 的文本文件 中写入我的日志。存储的文本文件如下
2011-11-17 23:05:17,266 [6] FATAL Application
2011-11-17 23:05:18,094 [6] FATAL Service
2011-11-17 23:17:08,862 [6] FATAL Receipts - SaveReceipts
System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
at GID.AAFramework.EntityWrapper.ReceiptFacade.SaveReceipts(IEnumerable`1 records, String user) in c:\AdvancedAnalyticsProjects\Surya\Trunk\dotnet_src\GID.AAFramework.EntityWrapper\ReceiptFacade.cs:line 632
现在我想读取这个文件并想记录第一次输入的日期和最后的日期
如何获取此文本文件中的首次更新日期和最后更新日期?
现在我正在使用以下代码读取此文本文件:
StreamReader sr = new StreamReader(FileLocation);
if (sr != null)
{
linelist.Add(sr.ReadToEnd());
LogInfoByDate.Add(FileLocation, "StartDate:" + linelist.First().Substring(0, 10) + "|" + "EndDate:" + linelist.Last().Substring(0, 10));
}
如果异常行是单个,我编写的这段代码是为了获取第一次日期和最后更新日期,但它不适用于多行异常,如上所示。现在这是我的问题。谁能告诉我如何获取此文本文件中的第一个和最后一个日期?
最佳答案
这是一种使用 LINQ 和 DateTime.TryParseExact
的方法:
DateTime d = DateTime.Now;
var format = "yyyy-MM-dd HH:mm:ss,fff";
var fileDates = System.IO.File.ReadAllLines(path)
.Where(l => l.Length >= format.Length
&& DateTime.TryParseExact(l.Substring(0, format.Length)
, format
, CultureInfo.InvariantCulture
, DateTimeStyles.None
, out d)
)
.Select(l => d)
.OrderBy(dt => dt);
if (fileDates.Any())
{
DateTime firstDate = fileDates.First(); // 2011-11-17 23:05:17,266
DateTime lastDate = fileDates.Last(); // 2011-11-17 23:17:08,862
}
关于c# - 如何使用C#读取文本文件中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10892633/