[英]How to compare 2 dates taken from datetimepicker in select query?
[英]how to compare two dates in datetimepicker
我正在執行Windows項目,其中有兩個DateTimePicker控件,一個用於StartDate,另一個用於EndDate。
在運行時,當用戶從該控件中選擇StartDate和EndDate時,應讀取textfile(即log.txt)並逐行搜索以獲取這些日期和日期之間的匹配,並將數據寫入到文本框或標簽控件
對於例如在日志文件中,數據如下:
2013年3月12日2:51:47 PM-ASDASDASD.D20131203145019 4/12/2013 2:52:23 PM-ASDDFSDSA.C20131203145019 5/12/2013 2:52:37 PM-SDASAFAS_20131203182101.D 6/12/2013下午3:17:11 -RRTWWEWA_20131203184602.D00 2013年7月12日下午3:35:32-XBCNXCXCXC.D0120131203153408
如果我從2013年12月5日到2013年12月7日進行搜索,則應檢索:
2013年5月12日2:52:37 PM-SDASAFAS_20131203182101.D 2013年6月12日3:17:11 PM-RRETWEWA_20131203184602.D00 2013年7月12日3:35:32 PM-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數據類型,而不是將所有內容都轉換為字符串。 從文件中讀取行后,解析出日期。 假設它始終將是文件中的第一個元素,並緊跟一個空格,則可以使用DateTime lineDate = DateTime.Parse(line.Split(" ")[0]);
一旦具有該格式的文件中的日期,並且從日期選擇器中獲取了DateTime fromDate
和DateTime toDate
,就可以編寫if(lineDate >= fromDate && lineDate <= toDate) sb.AppendLine(line);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.