在c#中是否有一个函数可以返回7作为一周的天数

在c#中是否有一个函数可以返回7作为一周的天数,c#,datetime,C#,Datetime,如果我将2017年5月2日星期三作为开始日期,将5月8日星期二作为结束日期,并将其作为参数输入以下代码 TimeSpan duration = startDate - endDate; return Convert.ToDouble(duration.TotalDays); 我得到6分。我理解为什么人们会本能地(或者至少我会)将这段时间视为一周(或者7天)。在C#中是否有一个现成的函数,返回该日期范围所代表的天数为7 返回6个。我理解为什么人们会本能地(或者至少我会)将这段时间视为一周(或者

如果我将2017年5月2日星期三作为开始日期,将5月8日星期二作为结束日期,并将其作为参数输入以下代码

TimeSpan duration =  startDate - endDate;
return Convert.ToDouble(duration.TotalDays);
我得到6分。我理解为什么人们会本能地(或者至少我会)将这段时间视为一周(或者7天)。在C#中是否有一个现成的函数,返回该日期范围所代表的天数为7

返回6个。我理解为什么人们会本能地(或者至少我会)将这段时间视为一周(或者7天)

它说是6天,因为它是6天

如果将起始日期指定为“2018年5月2日00:00:00”,将结束日期指定为“2018年5月8日23:59:59”,则答案为6.23:59:59天

如果使用5/2和5/3,则返回1,这是正确的。这与它对测试数据的处理没有什么不同

返回6个。我理解为什么人们会本能地(或者至少我会)将这段时间视为一周(或者7天)

它说是6天,因为它是6天

如果将起始日期指定为“2018年5月2日00:00:00”,将结束日期指定为“2018年5月8日23:59:59”,则答案为6.23:59:59天


如果使用5/2和5/3,则返回1,这是正确的。这与它对测试数据的处理没有什么不同。

问题在于
DateTime
不表示日期,它表示包含日期的时间点。当您编写“2018年5月2日”时,
DateTime
将其表示为“2018年5月2日午夜”。从
startDate
中减去
endDate
,您计算的是5月2日至5月8日午夜之间经过的时间量,正好是6

由于您希望在计算中包含两端,因此需要在结果中添加1天:

var from = new DateTime(2018, 5, 2);
var to = new DateTime(2018, 5, 8);
var diff = to.Date - from.Date + TimeSpan.FromDays(1);
Console.WriteLine(diff.TotalDays); // Prints 7

问题在于
DateTime
不表示日期,它表示包含日期的时间点。当您编写“2018年5月2日”时,
DateTime
将其表示为“2018年5月2日午夜”。从
startDate
中减去
endDate
,您计算的是5月2日至5月8日午夜之间经过的时间量,正好是6

由于您希望在计算中包含两端,因此需要在结果中添加1天:

var from = new DateTime(2018, 5, 2);
var to = new DateTime(2018, 5, 8);
var diff = to.Date - from.Date + TimeSpan.FromDays(1);
Console.WriteLine(diff.TotalDays); // Prints 7

startDate
endDate
的类型是什么?是否为
DateTime
?@dasblinkenlight Yes都定义为DatetimeTry类型,使用以下公式:
duration.Ticks/(TimeSpan.TicksPerDay-TimeSpan.TicksPerHour*4)
。这会给你你想要的。我要说的是,
6
似乎比
7
更自然。因此,请确保您真的想要这样做。@IceManin周的概念来源于这样一个事实,即最终用户将其视为从周三到下周二的每周会计期间。在这段时间内发生的任何事情都会包含在这周的账目中。他们认为这是7天,并对任何可能暗示这是6天的事情感到“困惑”。什么是
startDate
endDate
?是否为
DateTime
?@dasblinkenlight Yes都定义为DatetimeTry类型,使用以下公式:
duration.Ticks/(TimeSpan.TicksPerDay-TimeSpan.TicksPerHour*4)
。这会给你你想要的。我要说的是,
6
似乎比
7
更自然。因此,请确保您真的想要这样做。@IceManin周的概念来源于这样一个事实,即最终用户将其视为从周三到下周二的每周会计期间。在这段时间内发生的任何事情都会包含在这周的账目中。他们认为这是7天,并对任何可能暗示这是6天的事情感到“困惑”。