C# 年、月、日不同计数器(日期)在C中#

C# 年、月、日不同计数器(日期)在C中#,c#,datetime,C#,Datetime,我想知道是否已经有一个实现的Datecounter,可以计算不同日期之间的年、月和日数?如果存在差异,该函数将计算差异的年、月和日数并存储它,我们只需要使用Console.Writeline(timecomparer.yearDiffCounter)告诉他们相差多少年 例如(伪代码,不是100%正确) Jon Skeet为时间提供了强大的解决方案。Jon Skeet为时间提供了强大的解决方案。对C中的DateTime对象进行布尔运算,产生TimeSpan对象 DateTime Yesterday

我想知道是否已经有一个实现的Datecounter,可以计算不同日期之间的年、月和日数?如果存在差异,该函数将计算差异的年、月和日数并存储它,我们只需要使用
Console.Writeline(timecomparer.yearDiffCounter)告诉他们相差多少年

例如(伪代码,不是100%正确)


Jon Skeet为时间提供了强大的解决方案。

Jon Skeet为时间提供了强大的解决方案。

对C中的
DateTime
对象进行布尔运算,产生
TimeSpan
对象

DateTime Yesterday = DateTime.Now().AddDays(-1);
DateTime Today = DateTime.Now();

TimeSpan difference = Today - Yesterday;
时间跨度可以告诉你它有多少天、小时、分钟、秒等等


如果希望从时间跨度中减去年,请参见C#yield
Timespan
对象中的
DateTime
对象上的布尔运算

DateTime Yesterday = DateTime.Now().AddDays(-1);
DateTime Today = DateTime.Now();

TimeSpan difference = Today - Yesterday;
时间跨度可以告诉你它有多少天、小时、分钟、秒等等

如果希望从时间跨度中减去年,请参见使用:

使用:

我的方式你可以改变



我的方式你可以改变。

DateDifference=Date1-Date2,然后以DateDifference.Years为年differ@wudzik
Timespan
Year
?@V4Vendetta nope:P但你可以用天除以365或其他任何值:)日期的可能重复项difference=Date1-Date2,然后用一年一年的时间differ@wudzik
Timespan
Year
?@V4Vendetta nope:P但你可以用天数除以365或其他:)可能重复的
Timespan
在几年内没有值,因为它不是一个精确的时间尺度,所以时间跨度不能直接告诉你它已经过去了多少年,但不需要火箭科学来计算它跨越了多少年。还有,你怎么说它“不是一个精确的时间测量”。我们需要知道普朗克长度的时间吗?普朗克的时间长度是多少?在一个有趣的问题上,@MattJohnson:你与.NET框架的日期/时间相关部分之间的个人仇恨是什么?一年不是时间的精确度量,因为你必须知道你谈论的是哪几年。在我们大多数人使用的公历系统中,有些年份有365天,有些年份有366天。如果你平均起来,有人可能会说一年有365.242天,但现实生活中并不是这样。我们不是每年增加四分之一天,而是每闰年增加一整天。关于普朗克时间,这是一件真实的事情,你可以阅读它,但与讨论无关。(我想你是在挖苦人,但很难在评论中说出来。)
TimeSpan
没有年份值,因为它不是对流逝时间的精确测量。所以TimeSpan不能直接告诉你它已经过去了多少年,但不需要火箭科学来计算它跨越了多少年。还有,你怎么说它“不是一个精确的时间测量”。我们需要知道普朗克长度的时间吗?普朗克的时间长度是多少?在一个有趣的问题上,@MattJohnson:你与.NET框架的日期/时间相关部分之间的个人仇恨是什么?一年不是时间的精确度量,因为你必须知道你谈论的是哪几年。在我们大多数人使用的公历系统中,有些年份有365天,有些年份有366天。如果你平均起来,有人可能会说一年有365.242天,但现实生活中并不是这样。我们不是每年增加四分之一天,而是每闰年增加一整天。关于普朗克时间,这是一件真实的事情,你可以阅读它,但与讨论无关。(我想你是在挖苦人,但很难在评论中说出来。)我按照你的建议用野田佳彦的时间发布了一个答案。我按照你的建议用野田佳彦的时间发布了一个答案。这篇报道问了几年、几个月和几天。你不能从时间跨度中得到它。你仍然可以从时间跨度中得到月和日。@TimothyGroote-不,你也不能得到月。月份也不是时间流逝的度量。一个月有多少天?这取决于你谈论的月份。看看这个物体。没有
Months
TotalMonth
属性。我可以发誓他们在那里。。。游戏中的认知失调可能是:p OP要求几年、几个月和几天。你不能从时间跨度中得到它。你仍然可以从时间跨度中得到月和日。@TimothyGroote-不,你也不能得到月。月份也不是时间流逝的度量。一个月有多少天?这取决于你谈论的月份。看看这个物体。没有
Months
TotalMonth
属性。我可以发誓他们在那里。。。游戏中的认知失调可能是:P@Timothy-为什么会是编辑?这是对原始问题的实际回答。到目前为止,这是唯一一个真正实现了要求的答案,因此不值得投反对票。我的意思是,现在有两个答案基本上说明了同一件事,这一个只告诉你你将如何去做。很抱歉修改了(没有什么真正的改变),但我需要这样做来修正否决票。@Timothy-如果我刚刚编辑了另一个答案,它会给出不值得的分数。我确实编辑了它来更新链接,但我通常不会对其他问题进行激烈的编辑。只有次要的。@Timothy-为什么会是编辑?这是对原始问题的实际回答。到目前为止,这是唯一一个真正实现了要求的答案,因此不值得投反对票。我的意思是,现在有两个答案基本上说明了同一件事,这一个只告诉你你将如何去做。很抱歉编辑(没有真正更改),但我需要这样做来修复
LocalDate date1 = new LocalDate(2013, 07, 05);
LocalDate date2 = new LocalDate(2010, 07, 05);
Period period = Period.Between(date2, date1, PeriodUnits.YearMonthDay);
Console.WriteLine("{0} years, {1} months, {2} days",
                  period.Years, period.Months, period.Days);

// "3 years, 0 months, 0 days"
public  string DateDiff(DateTime DateTime1, DateTime DateTime2)
{
    string dateDiff = null;

    TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
    TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration();
    dateDiff = ts.Days.ToString() + "day"
        + ts.Hours.ToString() + "hours"
        + ts.Minutes.ToString() + "minutest"
        + ts.Seconds.ToString() + "seconds";

    return dateDiff;
}