Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算两个日期之间的差异(天数)?_C#_Date - Fatal编程技术网

C# 计算两个日期之间的差异(天数)?

C# 计算两个日期之间的差异(天数)?,c#,date,C#,Date,我知道这个问题已经被回答了,而且,但不是C。那么,假设StartDate和EndDate属于DateTime类型,那么如何计算C#?中两个日期之间的天数呢 (EndDate - StartDate).TotalDays (a.Date - b.Date).TotalDays 使用日期减法的结果TimeSpan对象: DateTime d1; DateTime d2; return (d1 - d2).TotalDays; 我想这会满足你的要求: DateTime d1 = DateTim

我知道这个问题已经被回答了,而且,但不是C。那么,假设
StartDate
EndDate
属于
DateTime
类型,那么如何计算C#?

中两个日期之间的天数呢

(EndDate - StartDate).TotalDays
 (a.Date - b.Date).TotalDays

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

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

我想这会满足你的要求:

DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);

TimeSpan t = d1 - d2;
double NrOfDays = t.TotalDays;
protected void Calendar1\u selection已更改(对象发送方、事件参数e)
{
DateTime d=Calendar1.SelectedDate;
//INTA;
TextBox2.Text=d.ToSortDateString();
字符串s=Convert.ToDateTime(TextBox2.Text).toSortDateString();
字符串s1=Convert.ToDateTime(Label7.Text).toSortDateString();
DateTime dt=Convert.ToDateTime.Date;
DateTime dt1=Convert.ToDateTime(s1).Date;

如果(dt以防有人想要整天的数字作为双倍(
a
b
类型
DateTime
):


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

首先声明稍后将返回的类:

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();
}
使用button控件调用上述类。下面是一个示例:

您可以尝试此方法

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

上面的答案是正确的,但是,如果您只希望整数为整天,并且愿意放弃日期的时间部分,那么请考虑:

(EndDate.Date - StartDate.Date).Days

再次假设
StartDate
EndDate
属于
DateTime

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

int total_days = (EndDate - StartDate).TotalDays

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

您可以使用以下代码:

 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds

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

对于像我这样的初学者来说,在一行简单的代码中,通过示例转换为int,将偶然发现这个小问题:

int totalDays = Convert.ToInt32((DateTime.UtcNow.Date - myDateTime.Date).TotalDays);
这将计算从今天(DateTime.UtcNow.Date)到所需日期(myDateTime.Date)的总天数

如果myDateTime是昨天的日期,或者比今天的日期早,则会得到一个正(+)整数结果

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


快乐编码!^ ^ ^

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

如果性能不是问题,我强烈建议通过中间转换记录您的计算。例如,
(EndDate-StartDate)。天
是不直观的,因为四舍五入将取决于
StartDate
EndDate
的小时部分

  • 如果您希望以天为单位的持续时间包括几天的分数,那么正如已经建议的那样 使用
    (EndDate-StartDate).TotalDays
  • 如果希望持续时间反映 两天之间的距离,然后使用
    (EndDate.Date-StartDate.Date).days
  • 如果希望持续时间反映 从开始日期的上午到开始日期的晚上之间的持续时间 结束日期(通常在项目管理软件中看到),然后使用
    (EndDate.Date-StartDate.Date)。天数+1

是否以DateTime格式获取日期间隔?因为我需要每个日期来修改表中的某个字段:)编辑:获取并将其作为下面的答案发布。ThanksDateTime xmas=new DateTime(DateTime.Today.Year,12,25);将使其逐年工作,而不仅仅是2009:)减去()运算符是否为DateTimes重载,因此它是相同的”(xmas-DateTime.Today).TotalDays-稍长一些。我发现这非常有用。希望这能帮助将来寻求此功能的人:)加减运算符对于
DateTime
TimeSpan
类型是超负荷的。这非常简单。--您遇到了什么具体问题?这是answer显然是正确的,但您也可以使用
(a-b).Days
如果您对总天数感兴趣,将其作为
int
而不是
double
,用小数表示部分日差。这将减少1天,2013年8月31日-2013年8月1日=31,但这只返回30天。@JasRajBishnoi-您可能想检查一下您的数学。31-1是什么?JasRaj在感觉包含这两个日期,它返回的差异会小一天。这完全取决于视角。@FahadAbidJanjua这不是一个问题或视角,而是一个时间问题,我的意思是,日期的时间部分。2013年8月31日-2013年8月1日实际上意味着2013年8月31日00:00-2013年8月1日00:00:00,这解释了为什么是30天,因为2013年8月31日ay才刚刚开始。这也解释了为什么在查询DateTime属性/字段时,获取范围的正确条件是“DateTimeProperty>=FromDate&&DateTimeProperty此代码在许多方面都是错误的!1)大量Winforms代码与问题无关。2)使用(我猜是WebBrowser控件)以有线方式显示消息框.3)使用WebBrowser控件显示已在标签中显示的文本。4)使用运算符Overload Subtract()(默认为“-”运算),如果执行“MyDateA-MyDateB”,则无论如何都会使用该运算符。5)对这堆代码没有解释。但这始终是一个整数(即n.00000)因为日期部分总是在午夜。向上投票仅仅是因为它表明(d1-d2)将返回TimeSpan对象。虽然此代码片段可能会解决此问题,但确实有助于提高您文章的质量。请记住,您将为将来的读者回答此问题,而这些人可能不知道您的代码建议的原因。此外,请尽量不要用解释性注释挤满您的代码,因为这是红色的提高了代码和解释的可读性!TotalDays返回一个double:因此您需要转换为Int。这实际上对我帮助最大,因为我的日期不同
 int DateDifInSecond = EndDate.Subtract(StartDate).TotalSeconds
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();
int totalDays = Convert.ToInt32((DateTime.UtcNow.Date - myDateTime.Date).TotalDays);