Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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# 以“X年、Y月、Z周、一天”的形式计算两个日期之间的差值`_C#_Vb.net - Fatal编程技术网

C# 以“X年、Y月、Z周、一天”的形式计算两个日期之间的差值`

C# 以“X年、Y月、Z周、一天”的形式计算两个日期之间的差值`,c#,vb.net,C#,Vb.net,可能重复: 如何计算到目前为止,包括年、日、月、周之间的确切差异。就像windows计算器一样 像这样表示1年、1个月、1周、1天,试试这个 TimeSpan span = endDate - startDate; //span.TotalDays gives days 至于月、年和周,人们想知道你是否需要一个Math.Floor或Math.Ceil试试这个 TimeSpan span = endDate - startDate; //span.TotalDays gives days 至

可能重复:

如何计算到目前为止,包括年、日、月、周之间的确切差异。就像windows计算器一样

像这样表示1年、1个月、1周、1天,试试这个

TimeSpan span = endDate - startDate;
//span.TotalDays gives days
至于月、年和周,人们想知道你是否需要一个
Math.Floor
Math.Ceil

试试这个

TimeSpan span = endDate - startDate;
//span.TotalDays gives days

至于几个月、几年和几周,人们想知道你是否需要一个
Math.Floor
Math.Ceil

我不相信.NET本身有任何有用的功能
TimeSpan
(您可以从
date2-date1
中获得)没有月等的概念-它实际上只是一个以滴答为单位的持续时间

你可以用这个,但它还没有完成。周期计算部分可能会进一步改变。。。我还不确定。如果您想要野田佳彦时间代码示例,请告诉我


还要注意,使用日期进行算术运算是非常困难的。有时很难找到正确的答案……

我不相信.NET本身有任何有用的功能
TimeSpan
(您可以从
date2-date1
中获得)没有月等的概念-它实际上只是一个以滴答为单位的持续时间

你可以用这个,但它还没有完成。周期计算部分可能会进一步改变。。。我还不确定。如果您想要野田佳彦时间代码示例,请告诉我

还要注意,使用日期进行算术运算是非常困难的。有时很难找到正确的答案……

在MSDN上找到了这一点
对于您的情况,您可以使用第一种方法
System.TimeSpan
以指定格式获取差异

System.DateTime date1 = new System.DateTime(1996, 6, 3, 22, 15, 0);
System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2, 0);
System.DateTime date3 = new System.DateTime(1996, 10, 12, 8, 42, 0);

// diff1 gets 185 days, 14 hours, and 47 minutes.
System.TimeSpan diff1 = date2.Subtract(date1);

// date4 gets 4/9/1996 5:55:00 PM.
System.DateTime date4 = date3.Subtract(diff1);

// diff2 gets 55 days 4 hours and 20 minutes.
System.TimeSpan diff2 = date2 - date3;

// date5 gets 4/9/1996 5:55:00 PM.
System.DateTime date5 = date1 - diff2;

在MSDN上找到了这个
对于您的情况,您可以使用第一种方法
System.TimeSpan
以指定格式获取差异

System.DateTime date1 = new System.DateTime(1996, 6, 3, 22, 15, 0);
System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2, 0);
System.DateTime date3 = new System.DateTime(1996, 10, 12, 8, 42, 0);

// diff1 gets 185 days, 14 hours, and 47 minutes.
System.TimeSpan diff1 = date2.Subtract(date1);

// date4 gets 4/9/1996 5:55:00 PM.
System.DateTime date4 = date3.Subtract(diff1);

// diff2 gets 55 days 4 hours and 20 minutes.
System.TimeSpan diff2 = date2 - date3;

// date5 gets 4/9/1996 5:55:00 PM.
System.DateTime date5 = date1 - diff2;

根据我对彼得回答的评论,这在几周、几个月和几年内都没有帮助。@Jon Skeet:如果我知道你在身边,我甚至不会回答:)我刚开始年复一年,然后我意识到了复杂性。根据我对彼得回答的评论,这在几周、几个月和几年内都没有帮助。@Jon Skeet:如果我知道你在身边,我甚至都不会回答:)我刚开始学习几年,然后我意识到了复杂性。我在打开
http://noda-time.sourceforge.net/
@Neeraj:Gah,对不起,对我来说太早了。我已经修复了链接:)@Jon:你可能需要重复你在这里提供的答案。打开
http://noda-time.sourceforge.net/
@Neeraj:Gah,对不起,对我来说太早了。我已经修复了链接:)@Jon:你可能需要重复你在这里提供的答案。