我发现这个问题已经在Java、JavaScript和PHP中得到了解答,但c#中没有。那么,如何在c#中计算两个日期之间的天数呢?


当前回答

如果有人想要作为双精度的天数(a, b类型的DateTime):

 (a.Date - b.Date).TotalDays

其他回答

上面的答案是正确的,但是如果你只想把整天作为整数,并且愿意放弃约会的时间部分,那么可以考虑:

(EndDate.Date - StartDate.Date).Days

同样假设StartDate和EndDate是DateTime类型。

对于像我这样的初学者来说,在简单的一行代码中就会遇到这个小问题:

int totalDays = Convert.ToInt32((DateTime.UtcNow.Date - myDateTime.Date).TotalDays);

这将计算从今天(DateTime.UtcNow.Date)到所需日期(myDateTime.Date)的总天数。

如果myDateTime是昨天,或比今天更早的日期,这将给出一个正(+)整数结果。

另一方面,如果myDateTime是明天或未来的日期,由于加法规则,这将给出一个负(-)整数结果。

编码快乐!^ _ ^

date格式为"dd/MM/yyyy"

  string[] d1 = txtFromDate.Values.Split('/');
  string[] d2 = txtToDate.Values.Split('/');

  DateTime FrmDt = new DateTime(Convert.ToInt32(d1[2]), Convert.ToInt32(d1[1]), Convert.ToInt32(d1[0]));
  DateTime ToDt = new DateTime(Convert.ToInt32(d2[2]), Convert.ToInt32(d2[1]), Convert.ToInt32(d2[0]));

  TimeSpan TDiff = ToDt.Subtract(FrmDt);
  String DaysDiff = TDiff.TotalDays.ToString();
// Difference in days, hours, and minutes.

TimeSpan ts = EndDate - StartDate;

// Difference in days.

int differenceInDays = ts.Days; // This is in int
double differenceInDays= ts.TotalDays; // This is in double

// Difference in Hours.
int differenceInHours = ts.Hours; // This is in int
double differenceInHours= ts.TotalHours; // This is in double

// Difference in Minutes.
int differenceInMinutes = ts.Minutes; // This is in int
double differenceInMinutes= ts.TotalMinutes; // This is in double

你也可以得到秒、毫秒和滴答的差异。

使用TimeSpan对象,它是date减法的结果:

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;