C#中的日期比较

时间:2011-12-15 17:37:31

标签: c# datetime date

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

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

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

提前致谢。

8 个答案:

答案 0 :(得分:7)

1. DateTime.Now.ToString("yyyy/MM/dd")
2. DateTime.Parse(input).Date == DateTime.Now.Date

答案 1 :(得分:3)

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

String today = String.Format("{0: yyyy/MM/dd}", DateTime.Now); 
String today = DateTime.Now.ToString("yyyy/MM/dd");

我建议不要使用文本文件作为保存数据的方法,但如果您使用该系统,则唯一需要做的就是检查文本文件中的日期是否与您格式化的日期相匹配。简单地比较格式化的字符串就可以了。

if(string a == string b)

你甚至可以把它放在一行而不必单独格式化

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

答案 2 :(得分:1)

  

在C#中比较日期的最简单方法是什么?

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

比较变量。

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

  

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

是。但这是错误的。 PARSE错误的输入并比较解析的数据。

答案 3 :(得分:1)

通过问题的信:

1:

DateTime.Now.ToString(@"yyyy\/MM\/dd") 

2:

if(d1 < d2)...
if(d2 >= d1)...

然而

DateTime dt;
if(DateTime.TryParseExact(readInString, "yyyy-MM-dd", null, DateTimeStyles.AssumeLocal, out dt))
{
  if(dt != DateTime.Now.Date)
  {
    //Code for case where it's no longer that day goes here.
  }
}
else
{
  //Code for someone messed up the file and it's not a valid date any more goes here.
}
  1. 你这样做是为了计算机阅读,而不是人类阅读,所以使用标准格式而不是传统格式(ISO标准,但除朝鲜以外的每个国家都将其作为国家标准):yyyy-MM-dd(编辑:我看到你在加拿大,CSA Z234.5:1989是关于技术目的的日期时间的相关国家标准;它说使用yyyy-MM-dd)。

  2. 你应该反过来做,读取字符串,解析日期,然后进行比较。

答案 4 :(得分:0)

您可以使用DateTime.Compare方法http://msdn.microsoft.com/en-us/library/system.datetime.compare.aspx - 这也应该让您使用内置的&lt;和&gt;运算符。

答案 5 :(得分:0)

您可能希望查看FileInfo-Class ...您可以将LastWriteTime成员与DateTime.Today进行比较

答案 6 :(得分:0)

//使用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

答案 7 :(得分:0)

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);

<强>输出:

格式化日期:2011/12/15

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

* 编辑我的初始帖子,阐明“总计”属性的工作原理。