Csharp/C#教程:在开始和结束时如何计算年和月的差异分享


在开始和结束时如何计算年和月的差异

可能重复:
计算年,月,周和日

如何计算开始和结束日期的年份和月份差异?

你好

在ac#2.0项目上工作,我需要计算开始和结束日期的年和月差异

我在考虑像这样的function

public void CalculateYearsAndMonths(DateTime startDate, DateTime endDate, out int years, out int months) { int years=0; int months=0; //???? } 

有什么建议?

即使两个日期之间的天数为365天,此代码也可以使用。 例如1972年2月29日和1973年2月28日,那么它将返回0年零11个月。

 if (endDate < startDate) { DateTime temp = endDate; endDate = startDate; startDate = temp; } years = endDate.Year - startDate.Year; months = endDate.Month - startDate.Month; int days = endDate.Day - startDate.Day; if (days < 0) months--; if (months < 0) { months += 12; years--; } 

顺便说一句,您需要删除两行以使out参数正常工作:

 int years=0; int months=0; 

我认为月份的数量是模糊的,因为每个月都会得到不同的天数。 但是,如果基于DateTime.MinValue ,您可以使用如下:

  TimeSpan difference = endDate - startDate; DateTime age = DateTime.MinValue + difference; // Min value is 01/01/0001 int ageInYears = age.Year - 1; int ageInMonths = age.Month - 1; int ageInDays = age.Day - 1; Console.WriteLine("{0}, {1}, {2}", ageInYears, ageInMonths, ageInDays); 

这取决于您想要计算数月和数年的方式。 您是否关心交叉边界(例如1月25日至2月1日=一个月或12月30日至1月1日= 1年)或关于平均大小月/年(例如,每月29天或一年365天)的数量日期?

您可以通过减去日期获得的TimeSpan结果将为您提供所有固定大小的时间段(例如,天,分钟)

请参阅此问题 ,了解为何数月和数年可能很难的一些细节。

 int years = endDate.Year - startDate.Year; int months = endDate.Month - startDate.Month; 

你可以尝试以上,应该工作。

像这样的东西?

  var end = endDate.Year + endDate.Month / 12.0; var start = startDate.Year + startDate.Month / 12.0; var years = (int)(end - start); var months = (end - start) * 12; 

不确定你是否想要整个月……

希望这可以帮助,

约翰

上述就是C#学习教程:在开始和结束时如何计算年和月的差异分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1303098.html

(0)
上一篇 2023年2月5日
下一篇 2023年2月5日

精彩推荐