通过comapaing两个日期来计算天数,如果你想比较两个日期,比如图书馆的预定日期和退货日期,那么你可以用这种方式得到没有天数
int TotalDay;
DateTime due = OldDate;
int day = due.Day;
int nday = DateTime.Now.Day;
int mnt = due.Month;
int nmnt = DateTime.Now.Month;
int yr = due.Year;
int nyr = DateTime.Now.Year;
if (nyr <= yr)
{
if (nmnt <= mnt)
{
if (nday > day)
{
TotalDay = nday - day;
}
}
else
{
TotalDay = nday - day;
m = nmnt - mnt;
TotalDay = d + (m * 30);
}
}
else
{
TotalDay = nday - day;
m = nmnt - mnt;
TotalDay = d + (m * 30);
int y = nyr - yr;
TotalDay = d + (y * 365);
}
答案 0 :(得分:12)
使用TimeSpan
TimeSpan ts = dateTime1 - dateTime2;
ts.TotalDays
将为您提供天数的差异。
在您的情况下,due
是截止日期,DateTime.Now
是当前日期。你可以使用:
TimeSpan ts = DateTime.Now - due;
//or
TimeSpan ts = DateTime.Now.Subtract(due);
int NumberOfDays = ts.TotalDays;
您可以查看TimeSpan.TotalDays属性
答案 1 :(得分:3)
你可以使用TimeSpan
,如其他答案所示 - 但你需要注意一天中的时间。您是否真的试图将这些视为日期或具有时间的日期?时区怎么样?您是否正在使用“本地”DateTime
值?
虽然DateTime
可以处理所有这些,但事情并不清楚。我个人使用Noda Time(这不应该让任何人感到惊讶,因为它是我自己的图书馆......)
LocalDate startDate = ...;
LocalDate endDate = ...;
long days = Period.Between(startDate, endDate, PeriodUnits.Days).Days;
请注意,查找“今天的日期”也需要知道适当的时区。 (DateTime.Now
和DateTime.Today
假设您的代码正在运行的系统时区,但这可能是您想要的,也可能不是。)
答案 2 :(得分:2)
您需要TimeSpan
Timespan t = ReturnDateTime - DateTime.Now;
然后使用
t.Days
用于计算剩余天数。