Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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
Asp.net 计算月数和天数而不是年值_Asp.net_Vb.net - Fatal编程技术网

Asp.net 计算月数和天数而不是年值

Asp.net 计算月数和天数而不是年值,asp.net,vb.net,Asp.net,Vb.net,我想计算两个日期之间的月份和天数,没有年份值。它还必须包括开始日和结束日。谢谢。经过全面测试 在C#中,如果您想要真正的月和日,您必须执行以下过程: DateTime dt1 = DateTime.Parse("2011-01-01"); DateTime dt2 = DateTime.Parse("2014-01-01"); // because of calculate from date1 at time 00:00 to date2 at time 00:00 we must add 1

我想计算两个日期之间的月份和天数,没有年份值。它还必须包括开始日和结束日。谢谢。

经过全面测试 在C#中,如果您想要真正的月和日,您必须执行以下过程:

DateTime dt1 = DateTime.Parse("2011-01-01");
DateTime dt2 = DateTime.Parse("2014-01-01");
// because of calculate from date1 at time 00:00 to date2 at time 00:00 we must add 1 day to date2
dt2 = dt2.AddDays(1);
int nMonths = 0;
while (dt1.AddMonths(1) <= dt2)
{
    dt1 = dt1.AddMonths(1);
    nMonths++;
}
int nDays = dt2.Subtract(dt1).Days;
return String.Format("{0}m{1}d", nMonths, nDays);
' http://www.developerfusion.com/tools/convert/csharp-to-vb/  
' http://codeconverter.sharpdevelop.net/SnippetConverter.aspx

Dim dt1 As DateTime = DateTime.Parse("2011-01-01")  
Dim dt2 As DateTime = DateTime.Parse("2014-01-01")
' because of calculate from date1 at time 00:00 to date2 at time 00:00 we must add 1 day to date2
dt2 = dt2.AddDays(1)  
Dim nMonths As Integer = 0  
While dt1.AddMonths(1) <= dt2  
    dt1 = dt1.AddMonths(1)  
    nMonths += 1  
End While  
Dim nDays As Integer = dt2.Subtract(dt1).Days  
Return String.Format("{0}m{1}d", nMonths, nDays)
DECLARE @dt1 DATETIME
DECLARE @dt2 DATETIME
DECLARE @nDays INT
DECLARE @nMonths INT

SET @dt1 = '2011/01/01'
SET @dt2 = '2014/01/01'
-- because of calculate from date1 at time 00:00 to date2 at time 00:00 we must add 1 day to date2
SET dt2 = DATEADD(mm, 1, @dt1)
WHILE (DATEADD(mm, 1, @dt1) <= @dt2)
BEGIN
    SET @dt1 = DATEADD(mm, 1, @dt1)
    SET @nMonths = ISNULL(@nMonths, 0) + 1
END
SET @nDays = DATEDIFF(dd, @dt1, @dt2)

PRINT CAST(@nMonths AS VARCHAR) + 'm' + CAST(@nDays AS VARCHAR) + 'd'
-- you can create a sql function to get two date and return datediff as same as '5m8d'.
DateTime dt1=DateTime.Parse(“2011-01-01”);
DateTime dt2=DateTime.Parse(“2014-01-01”);
//由于从日期1 00:00计算到日期2 00:00,我们必须在日期2上加上1天
dt2=dt2.AddDays(1);
int nMonths=0;

而(dt1.ADD月数)(1)这取决于您希望如何计算开始和开始时的天数。您希望开始和结束时的天数成为天数的一部分,还是应该将其包含在月数计数中?例如,如果我在开始月份的月份已经过去了一周,而在结束月份的月份已经过去了一周,那么我可能有20天的时间从开始计算开始月份和结束月份的20天,那么您想要14个月和40天,还是15个月和10天

如果您希望使用第二种解决方案,只需计算开始日期和结束日期之间的天数,除以一个月内的平均天数,并将剩余部分声明为天数

下面的代码是aircode(未经测试)。虽然有点凌乱,但它可以完成任务

int Days = DateDiff(day, StartDate, EndDate)
int Months = Math.Floor(Days / (365.25/12))
Days = Days - (Months * (365.25/12)) 
如果您喜欢第一种方法,只需从计数中提取天数,然后计算剩余的月数,然后将最初提取的天数添加到计数中


就像我说的,这取决于你想要什么。

你有没有尝试过任何代码示例?你能帮我把你的代码转换成vb.net吗..谢谢这很简单:我在vb中使用了你最上面的C代码,如下所示:While(StDate.AddMonths(1)最后我解决了这个问题,把一天放回起始日期,然后计算它,包括最后一天/开始日期。谢谢。好的,你说得对。它从date1的00:00计算到date2的00:00;所以你必须把1天加到date2,然后开始处理……Craig,DateDiff是通过排除开始和结束日期来计算一天的。我在2005年7月1日和2006年6月30日使用它,但结果是11个月364天,这不是我的要求。在上述情况下,我的要求是:“12个月0天”。我在一个会计系统上工作,所以只有一天重要,如果可以的话,请帮助我。这是正确的。如果你只输入日期,那么该系统将被禁用et将时间设置为午夜(00:00),因此您只覆盖2005年7月1日00:00至2006年6月30日00:00。如果您只想输入日期,但希望系统计算最后一天的人数,则需要添加一天(以便查看2006年7月1日)或者添加一天,删除一秒钟。您可以这样做:
int Days=DateDiff(day,StartDate,DateAdd(分钟,DateAdd(day,EndDate,1),-1))
[Aircode]。