解决 如何将txt文件中的日期与Windows的日期进行比较

史蒂夫90

新成员
已加入
2020年5月5日
留言内容
4
编程经验
Beginner
你好,
我有一个这样的txt文件:
21/05/2020 17:05:00;信息;信息;信息
我知道如何获得第一列的这一部分"21/05/2020 17:05:00"并将其作为变量。
现在,我遇到的问题是,我不知道如何将txt文件中的日期和小时与Windows的日期和小时进行比较。
有人可以告诉代码应该如何吗?

谢谢你。

这是我目前正在尝试的方法:

C#:
string[] liness = File.ReadAllLines(ofd.FileName);

if (liness.Length > 0)
    {
    string lastLine = liness[liness.Length - 1];
    string[] columns = lastLine.Split(';');
    if (columns.Length > 0)
        {
        string date = columns[0];
        string dateString = date;
约会时间 dateValue = DateTime.ParseExact(dateString, "dd/MM/yyyy HH:mm:ss", CultureInfo.CurrentCulture); <-- 但是这里给我一个错误:""无法将字符串识别为有效的DateTime值。""
我在调试模式下看到了"date" he read "03/04/2019 11:22:09 --- \ t"

有人知道要解决此问题或如何根据我的需要实施它吗?
 
由主持人最后编辑:

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,049
地点
挪威
编程经验
10+
ParseExact期望输入字符串与格式完全匹配,如果它包含多余的文本,则将不匹配。由于您期望使用19个字符,因此可以按该长度删除多余的文本:
C#:
日期String = dateString.Remove(19);
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,524
地点
悉尼,澳大利亚
编程经验
10+
我不确定您显示的破折号是否为文字。你可以打电话 修剪 或者 修剪结束 删除任何空格字符,包括空格和Tab字符。如果您也要删除非空格,请按照以下步骤操作 @约翰·H suggested.
 

史蒂夫90

新成员
已加入
2020年5月5日
留言内容
4
编程经验
Beginner
ParseExact期望输入字符串与格式完全匹配,如果它包含多余的文本,则将不匹配。由于您期望使用19个字符,因此可以按该长度删除多余的文本:
C#:
日期String = dateString.Remove(19);

你是对的!它与您的解决方案一起工作也很好。
现在,我试图将变量dateString(21/05/2020 17:05:00)与Windows日期和小时进行比较。
C#:
约会时间 dateValue = DateTime.ParseExact(dateString, "dd/MM/yyyy HH:mm:ss", CultureInfo.CurrentCulture);

if (dateValue.Date == DateTime.Now.Date)
{
    MessageBox.Show("OK");
}
else
{
    MessageBox.Show("BAD");
}
在执行操作时,他只是比较数据而不是小时,如何将变量dateString与Windows日期和小时进行比较?如果不以毫秒为单位,应该会更好。
可以帮我吗?
 
由主持人最后编辑:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,532
地点
弗吉尼亚州切萨皮克
编程经验
10+
The Date is just the date part of the the 约会时间 structure. Since that's the only thing you are telling the computer to compare, then that is exactly what it will do. Our current generation of computers and compilers don't have the capability of reading our minds yet to do what we mean rather than what we tell it to do. :)

If you look at the documentation, you'll see that the 约会时间 structure also has the 小时 property.

I would urge you to exercise caution when doing comparisons of just parts of a 约会时间, specially when you have to deal with multiple time zones. Either confirm that the two date times you are comparing are in the same time zone, or convert all off them to UTC before doing your comparisons.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,532
地点
弗吉尼亚州切萨皮克
编程经验
10+
我还将抛出暴力破解方法,因为它可以工作(假设正确的时区),但可能会使您进入 每日WTF:
C#:
string format = "dd/MM/yyyy HH";
if (dateValue.ToString(format) == DateTime.Now.ToString(format))
:
 
最佳 底部