如何比较 c # 中的日期

我有两个约会。一个日期是输入的,另一个是 DateTime.Now。我有它们的 mm/dd/yyyy格式,甚至可以是 m/d/广州欢聚时代格式。这两个日期都可以为空,也就是说,数据类型是 DateTime?,因为我也可以将 null 作为输入传递。现在我想比较两个日期只与 mm/dd/yyyym/d/yy格式。

218861 次浏览

如果您的日期在 DateTime 变量中,则它们不是 格式。

可以使用 Date属性返回时间部分设置为午夜的 DateTime 值。所以,如果你有:

DateTime dt1 = DateTime.Parse("07/12/2011");
DateTime dt2 = DateTime.Now;


if(dt1.Date > dt2.Date)
{
//It's a later date
}
else
{
//It's an earlier or equal date
}

首先,了解 DateTime对象不是格式化的。它们只是将年、月、日、小时、分钟、秒等作为数值存储,当您想以某种方式将其表示为字符串时,就会发生格式化。您可以比较 DateTime对象,而不必格式化它们。

要将输入日期与 DateTime.Now进行比较,您需要首先将输入解析为一个日期,然后仅比较年/月/日部分:

DateTime inputDate;
if(!DateTime.TryParse(inputString, out inputDate))
throw new ArgumentException("Input string not in the correct format.");


if(inputDate.Date == DateTime.Now.Date) {
// Same date!
}

如果在 DateTime变量中有 date,那么它是一个 DateTime对象,不包含任何格式。当您调用 DateTime.ToString方法并在其中提供格式时,格式化的日期表示为 string

假设你有两个 DateTime变量,你可以使用比较方法进行比较,

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 2, 0, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;


if (result < 0)
relationship = "is earlier than";
else if (result == 0)
relationship = "is the same time as";
else
relationship = "is later than";

取自 我不知道的代码片段。