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


当前回答

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

其他回答

对于a和b作为两个DateTime类型:

DateTime d = DateTime.Now;
DateTime c = DateTime.Now;
c = d.AddDays(145);
string cc;
Console.WriteLine(d);
Console.WriteLine(c);
var t = (c - d).Days;
Console.WriteLine(t);
cc = Console.ReadLine();

得到两个日期之间的差值,然后从下面得到日期:

int total_days = (EndDate - StartDate).TotalDays

在计算两个日期之间的天数时,经常会有关于时间(小时)的争论。对这个问题的回答和他们的评论都没有例外。

考虑到StartDate和EndDate是DateTime类型:如果性能不是问题,我强烈建议通过中间转换记录您的计算。例如,(EndDate - StartDate)。天是不直观的,因为舍入将依赖于StartDate和EndDate的小时组件。

如果您希望以天为单位的持续时间包括天的分数,那么如前所述 使用(结束日期-开始日期). totaldays。 如果你想要反映持续时间 两天之间的距离,然后使用(EndDate。日期-开始日期。日期).天 如果你想让持续时间反映 开始日期的上午和开始日期的晚上之间的持续时间 结束日期(通常在项目管理软件中看到),然后使用 (EndDate。日期-开始日期。日期)。天+ 1

DateTime xmas = new DateTime(2009, 12, 25);
double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;

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

 (a.Date - b.Date).TotalDays