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


当前回答

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

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

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

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

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

编码快乐!^ _ ^

其他回答

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

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

 (a.Date - b.Date).TotalDays

使用时间跨度可以解决问题,因为它有很多属性:

DateTime strt_date = DateTime.Now;
DateTime end_date = Convert.ToDateTime("10/1/2017 23:59:59");
//DateTime add_days = end_date.AddDays(1);
TimeSpan nod = (end_date - strt_date);
Console.WriteLine(strt_date + "" + end_date + "" + "" + nod.TotalHours + "");
Console.ReadKey();
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    DateTime d = Calendar1.SelectedDate;
    // int a;
    TextBox2.Text = d.ToShortDateString();
    string s = Convert.ToDateTime(TextBox2.Text).ToShortDateString();
    string s1 =  Convert.ToDateTime(Label7.Text).ToShortDateString();
    DateTime dt = Convert.ToDateTime(s).Date;
    DateTime dt1 = Convert.ToDateTime(s1).Date;
    if (dt <= dt1)
    {
        Response.Write("<script>alert(' Not a valid Date to extend warranty')</script>");
    }
    else
    {
        string diff = dt.Subtract(dt1).ToString();
        Response.Write(diff);
        Label18.Text = diff;
        Session["diff"] = Label18.Text;
    }
}   

你可以试试这个

EndDate.Date.Subtract(DateTime.Now.Date).Days