我正在做 Windows 项目,其中有两个 DateTimePicker 控件,一个用于 StartDate,另一个用于 EndDate。
在运行时,当用户从该控件中选择 StartDate 和 EndDate 时,它应该读取文本文件(即 log.txt 并逐行搜索以获得这些日期以及日期之间的匹配,并将数据写入文本框或标签控件
例如在日志文件中,数据如下:
2013 年 3 月 12 日下午 2:51:47 - ASDASDASD.D20131203145019
2013 年 4 月 12 日下午 2:52:23 - ASDDFSDSA.C20131203145019
2013 年 5 月 12 日下午 2:52:37 - SDASAFAS_20131203182101.D
2013 年 6 月 12 日下午 3:17:11 - RRRTWEWA_20131203184602.D00
2013 年 7 月 12 日下午 3:35:32 - XBCNXCXCXC.D0120131203153408
如果我从 2013 年 12 月 5 日到 2013 年 12 月 7 日搜索,它应该检索:
2013 年 5 月 12 日下午 2:52:37 - SDASAFAS_20131203182101.D
2013 年 6 月 12 日下午 3:17:11 - RRRTWEWA_20131203184602.D00
2013 年 7 月 12 日下午 3:35:32 - XBCNXCXCXC.D0120131203153408
但到目前为止我得到:
2013 年 5 月 12 日下午 2:52:37 - SDASAFAS_20131203182101.D
2013 年 7 月 12 日下午 3:35:32 - XBCNXCXCXC.D0120131203153408
我仅检索 StartDate 和 EndDate 匹配数据,而不是日期数据之间的数据。
以下是我尝试过的一些编码:
try
{
// ...
string FDDate = FD.Date.ToString("M/d/yyyy");
string TDDate = TD.Date.ToString("M/d/yyyy");
string searchstring = EnterFileNameTextbox.Text.ToString();
string searchfromdate = FromDateTimePicker.Value.ToShortDateString();
string searchtodate = ToDateTimePicker.Value.ToShortDateString();
string line;
StringBuilder sb = new StringBuilder();
int counter = 0;
using (StreamReader file = new StreamReader(@"D:\log.txt"))
{
while ((line = file.ReadLine()) != null)
{
if (line.Contains(searchstring) && line.Contains(FDDate))
{
sb.AppendLine(line.ToString());
counter++;
}
else if (line.Contains(searchstring) && !line.Contains(FDDate))
{
if (FD.Date < TD.Date)
{
sb.AppendLine(line.ToString());
counter++;
FDDate = FD.Date.AddDays(1).ToShortDateString();
}
else if (FD.Date == TD.Date)
{
FDDate = FD.Date.ToShortDateString();
sb.AppendLine(line.ToString());
counter++;
}
}
}
}
ResultTextBox.Text = sb.ToString();
CountLabel.Text = counter.ToString();
}
catch (Exception ex)
{
MessageBox.Show("The file could not be read");
MessageBox.Show(ex.Message);
}
我不知道做循环。
我建议使用DateTime.TryParse
(doc here)而不仅仅是转换。这将允许您提供有效的格式、处理失败(如果失败,转换将抛出异常)。
关于使用的部分Date属性看起来不错,比较运算符将按预期工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)