c# - 如何使用C#读取文本文件中的日期

标签 c# text-files

我正在使用 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/

相关文章:

c# - 包含在创建查询后不起作用

c# - 当 TabControl 绑定(bind)到 ViewModels 时 WPF 变慢

python-3.x - 如何在 Python 中更新文本文件的值

c - 如何从c中的文件中正确读取某些字符串?

c# - 带字符替换的字符串组合

c# - 如何使用 c#.net 在桌面应用程序中使列表框文本居中对齐

c - 在C中的字结构数组中存储元素

c++ - 如果 C++ 中不存在文件夹,如何创建文件夹?

string - 为什么我不能将 Lines 迭代器收集到一个字符串向量中?

c# - Azure 移动服务 - Entity Framework 代码首先删除并创建数据库不起作用