在开始和结束时如何计算年和月的差异
可能重复:
计算年,月,周和日
如何计算开始和结束日期的年份和月份差异?
你好
在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