代码之家  ›  专栏  ›  技术社区  ›  Mansa

检查是否在结束前7天内[副本]

  •  0
  • Mansa  · 技术社区  · 6 年前

    我知道这个问题已经回答了好几个小时了 Java , JavaScript ,和 PHP ,但不是C#。那么,如何计算C#中两个日期之间的天数呢?

    0 回复  |  直到 8 年前
        1
  •  2238
  •   Rohit Greg Beech    10 年前

    假设 StartDate EndDate DateTime :

    (EndDate - StartDate).TotalDays
    
        2
  •  237
  •   Selim Yildiz    5 年前

    (EndDate.Date - StartDate.Date).Days
    

    再次假设 StartDate EndDate 属于 DateTime

        3
  •  145
  •   Vitaliy Liptchinsky    15 年前

    使用日期相减的结果TimeSpan对象:

    DateTime d1;
    DateTime d2;
    return (d1 - d2).TotalDays;
    
        4
  •  51
  •   pyrocumulus    15 年前

    我想这会满足你的要求:

    DateTime d1 = DateTime.Now;
    DateTime d2 = DateTime.Now.AddDays(-1);
    
    TimeSpan t = d1 - d2;
    double NrOfDays = t.TotalDays;
    
        5
  •  35
  •   Soner Gönül to StackOverflow    11 年前
    DateTime xmas = new DateTime(2009, 12, 25);
    double daysUntilChristmas = xmas.Subtract(DateTime.Today).TotalDays;
    
        6
  •  22
  •   kingPuppy    11 年前

    以防有人想要双倍的天数( a , b 类型 DateTime

     (a.Date - b.Date).TotalDays
    
        7
  •  21
  •   Peter Mortensen icecrime    7 年前
    // 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
    

    您还可以获得秒、毫秒和滴答声的差值。

        8
  •  10
  •   Rohidas Kadam    10 年前

    你可以试试这个

    EndDate.Date.Subtract(DateTime.Now.Date).Days
    
        9
  •  4
  •   Peter Mortensen icecrime    7 年前

    使用timespan可以解决问题,因为它有许多属性:

    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();
    
        10
  •  3
  •   Peter Mortensen icecrime    8 年前

    为了 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();
    
        11
  •  3
  •   Peter Mortensen icecrime    7 年前

    对于像我这样的初学者来说,在简单的一行中,通过将示例转换为 :

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

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

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

        12
  •  3
  •   Ama    4 年前

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

    如果性能不是一个问题,我强烈建议通过中间转换记录您的计算。例如, (EndDate - StartDate).Days StartDate EndDate .

    • 如果希望以天为单位的持续时间包含天的分数,那么正如前面所建议的那样 (EndDate - StartDate).TotalDays .
    • 如果你想让持续时间反映 两天之间的距离,然后使用 (EndDate.Date - StartDate.Date).Days
    • 如果你想让持续时间反映 从开始日期的上午到开始日期的晚上之间的持续时间 结束日期(通常在项目管理软件中看到),然后使用 (EndDate.Date - StartDate.Date).Days + 1
        13
  •  0
  •   Peter Mortensen icecrime    8 年前

    public void date()
    {
        Datetime startdate;
        Datetime enddate;
        Timespan remaindate;
    
        startdate = DateTime.Parse(txtstartdate.Text).Date;
        enddate = DateTime.Parse(txtenddate.Text).Date;
    
        remaindate = enddate - startdate;
    
        if (remaindate != null)
        {
            lblmsg.Text = "you have left with " + remaindate.TotalDays + "days.";
        }
        else
        {
            lblmsg.Text = "correct your code again.";
        }
    }
    
    protected void btncal_Click(object sender, EventArgs e)
    {
        date();
    }
    

    使用按钮控件调用上述类。举个例子:

        14
  •  0
  •   Peter Mortensen icecrime    8 年前

    您可以使用以下代码:

     int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds
    
        15
  •  0
  •   Peter Mortensen icecrime    8 年前

    获取两个日期之间的差值,然后获取以下日期:

    int total_days = (EndDate - StartDate).TotalDays
    
        16
  •  -25
  •   songyuanyao    11 年前
    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;
        }
    }