C# C语言中的日期比较#

C# C语言中的日期比较#,c#,datetime,date,C#,Datetime,Date,我目前正在做一个小项目,我遇到了一个小问题。 我希望我的程序在启动时调用方法CheckDate。 此方法将读取.txt文件,以查看上次保存的日期(yyyy/mm/dd)格式。 然后它会将它与今天的日期进行比较,如果不一样的话,继续做一些说明。我已经阅读了文档,但找不到最适合我需要的方法 问题1:有没有办法以(yyyy/mm/dd)格式获取今天的日期 问题2:用C#比较日期最简单的方法是什么 提前谢谢 用C#比较日期最简单的方法是什么 不要将它们存储为文本,而是存储在DatteTime中 比较变量

我目前正在做一个小项目,我遇到了一个小问题。 我希望我的程序在启动时调用方法
CheckDate
。 此方法将读取.txt文件,以查看上次保存的日期(yyyy/mm/dd)格式。 然后它会将它与今天的日期进行比较,如果不一样的话,继续做一些说明。我已经阅读了文档,但找不到最适合我需要的方法

问题1:有没有办法以(yyyy/mm/dd)格式获取今天的日期

问题2:用C#比较日期最简单的方法是什么

提前谢谢

用C#比较日期最简单的方法是什么

不要将它们存储为文本,而是存储在DatteTime中

比较变量

如果两者都有时间,比较a.Date==b.Date

有没有办法以(yyyy/mm/dd)格式获取今天的日期


对。但这是错误的。分析错误的输入并比较分析的数据。

有一个
日期时间。比较您可以使用的
方法-这也应该允许您使用内置的运算符。

根据问题的字母:

1:

2:

  • 您这样做是为了计算机阅读,而不是人类阅读,因此请使用标准格式而不是传统格式(ISO中的标准格式,但除朝鲜外的所有国家都将其作为国家标准):yyy-MM-dd(编辑:我知道你在加拿大,出于技术目的,CSA Z234.5:1989是日期时间的相关国家标准;它说使用yyyy-MM-dd)

  • 您应该反过来做,读取字符串,解析日期,并进行比较


  • 您可能需要查看…您可以将LastWriteTime成员与DateTime进行比较。今天

    您只需格式化日期,即可将今天的日期作为字符串获取

    1. DateTime.Now.ToString("yyyy/MM/dd")
    2. DateTime.Parse(input).Date == DateTime.Now.Date
    
    String today = String.Format("{0: yyyy/MM/dd}", DateTime.Now); 
    String today = DateTime.Now.ToString("yyyy/MM/dd");
    
    我建议不要使用文本文件作为保存数据的手段,但如果使用该系统,唯一需要做的就是检查文本文件中的日期是否与格式化的日期匹配。只需比较格式化的字符串即可

    如果(字符串a==字符串b)

    您甚至可以将其放在一行中,而不必单独格式化内容

    if (DateTime.Now.ToString("yyyy/MM/dd").Equals("date pulled from txt file"))
    

    //使用TimeSpan执行类似的操作

      strCurDate = string.Format(DateTime.Now.ToString(), "yyyy/mm/dd");
      FileInfo fiUpdateFileFile = null;
      fiUpdateFileFile = new FileInfo(YourFile Location + Your FileName);
      if (((TimeSpan)(DateTime.Now - fiUpdateFileFile.LastWriteTime)).TotalHours < 24)
      {  
        // do your logic here...
      }
    // you could also get at DateTime.Now.Date() or Day.. depending on what you want to do
    
    strCurDate=string.Format(DateTime.Now.ToString(),“yyyy/mm/dd”);
    FileInfo fiUpdateFileFile=null;
    fiUpdateFileFile=新文件信息(文件位置+文件名);
    if(((TimeSpan)(DateTime.Now-fiupdatefile.LastWriteTime)).TotalHours<24)
    {  
    //你的逻辑在这里。。。
    }
    //您还可以在DateTime.Now.Date()或Day..获取,具体取决于您要执行的操作
    
    输出:

    格式化日期:2011/12/15

    日期差异:
    总天数:1.42889802083333;总小时数:34.2935525;总分钟数:2057.61315;总秒数: 123456.789;总毫秒数:123456789


    *编辑了我最初的帖子,以澄清“总数”是如何计算的属性起作用。

    您当前如何读取字符串?您需要将其解析为
    DateTime
    对象,并将其与
    DateTime进行比较。今天
    。不要尝试将
    DateTime。今天
    转换为字符串并以这种方式进行比较。
    DateTime
    对象具有许多内置的日期/时间函数逻辑我现在在我的.txt文件中一行一行地阅读它。你如何将
    DateTime
    存储为
    DateTime
    文件中的
    DateTime
    ,正如OP所要求的那样?好吧,但我对这一点有点陌生。如果我没有弄错的话,streamwriter和streamreader正在使用字符串否?这就是为什么我一直坚持转换的原因我怎么能在我的.txt文件中存储datetime呢?@KirkWoll我本来应该怎么问的。
    datetime.Parse(input.Date
    -有一个运行时错误正在等待发生:)他说最简单的方法,他没有说任何关于验证的内容:D。另外,找到TryParse并不是一个巨大的飞跃。这也会起作用,但是查看TotalHours属性,当将它与当前日期时间进行比较时,或者在您的示例中使用时间戳进行d2-d1时,它会得出一天中的真实小时数/总小时数。好吧,但是因为我必须在//做逻辑部分,我将如何写新的日期?或者写任何int将改变
    LastWriteTime
    ?,除非它不起作用。查看最后一次文件写入时间的想法很好,但是strCurDate是错误的(在我现在运行它的系统上,结果是“YYYY-12-DD”),并且无论如何都没有使用。此外,“今天之前的最后更新”(在问题中)与过去24小时内的更新不同,在您的回答中,可以进行夏令时更改。谢谢@Jon我将使用其他逻辑您可以始终使用日期时间。现在写入取决于您要写入的过程中的位置。。如果文件被打开,您将关闭它,并在此时创建FileInfo对象,捕获LastWriteTime并将其存储在字符串变量中。。但是如果你必须把它写入一个文件。。在关闭文件之前添加日期时间。。有道理。。?对于格式,通常使用小写的yyyymmdi更喜欢这种方法
    yyyymmdd
    将是年份,然后是分钟,然后是日期。在我的系统中,这将给出2011-12-15。尽管我认为他们无论如何都应该在这样的环境中使用这种格式,但由于系统设置的变化,他们不应该使用这种格式。您想转义到
    @“yyyy\/MM\/dd”
    以保证
    /
    而不是系统日期分隔符。@JonHanna只要您以相同的方式解析两个日期,这就不重要了。@Chase这正是问题所在。在很长一段时间内,这台机器会以“2011/12/16”格式编写和解析您的字符串,因为默认设置为dd/MM/yyyy,然后
    /
    会转到
    /
    。我改变了,因为我更喜欢标准格式,所以现在需要y
    String today = String.Format("{0: yyyy/MM/dd}", DateTime.Now); 
    String today = DateTime.Now.ToString("yyyy/MM/dd");
    
    if (DateTime.Now.ToString("yyyy/MM/dd").Equals("date pulled from txt file"))
    
      strCurDate = string.Format(DateTime.Now.ToString(), "yyyy/mm/dd");
      FileInfo fiUpdateFileFile = null;
      fiUpdateFileFile = new FileInfo(YourFile Location + Your FileName);
      if (((TimeSpan)(DateTime.Now - fiUpdateFileFile.LastWriteTime)).TotalHours < 24)
      {  
        // do your logic here...
      }
    // you could also get at DateTime.Now.Date() or Day.. depending on what you want to do
    
    DateTime d1 = DateTime.Now;
    DateTime d2 = d1.AddMilliseconds(123456789);
    string formattedDate = d1.ToString("yyyy/MM/dd");
    
    TimeSpan ts = d2 - d1;
    
    double dayDiff = ts.TotalDays;
    double hourDiff = ts.TotalHours;
    double minuteDiff = ts.TotalMinutes;
    double secondDiff = ts.TotalSeconds;
    double milDiff = ts.TotalMilliseconds;
    
    Console.WriteLine("Formatted Date: {0}\r\nDate Diff:\r\nTotal Days: {1}; Total Hours: {2}; Total Minutes: {3}; Total Seconds: {4}; Total Milliseconds: {5}", formattedDate,dayDiff,hourDiff,minuteDiff,secondDiff,milDiff);