我有两个约会。输入一个日期,其他日期为DateTime.Now
。我有它们mm/dd/yyyy
格式,它甚至可以是m / d / yy格式。两个日期都是可空的,即数据类型为DateTime?
,因为我也可以将null作为输入传递。现在,我想仅将这两个日期与mm/dd/yyyy
或m/d/yy
格式进行比较。
答案 0 :(得分:74)
如果您在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
}
答案 1 :(得分:29)
如果您在DateTime
变量中有日期,那么它是一个DateTime
对象,并且不包含任何格式。当您调用string
方法并在其中提供格式时,格式化日期表示为DateTime.ToString
。
假设您有两个DateTime
变量,您可以使用compare方法进行比较,
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";
摘自msdn的代码段。
答案 2 :(得分:8)
首先,要了解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!
}