可能重复:
Converting Days into Human Readable Duration Text
How do I calculate difference in years and months given a start and end如何获得开始和结束日期之间的时间
我使用(结束日期 - 开始日期).TotalDays返回总天数。例如,145天
但我不想总的日子。
有可能将145天转换为3个月和25天这样的事情。
可能重复:
Converting Days into Human Readable Duration Text
How do I calculate difference in years and months given a start and end如何获得开始和结束日期之间的时间
我使用(结束日期 - 开始日期).TotalDays返回总天数。例如,145天
但我不想总的日子。
有可能将145天转换为3个月和25天这样的事情。
两个DateTime
对象结果的差异在TimeSpan
对象中。由于跨月的时间在几个月内不一致,因此TimeSpan
对象如何用几个月来表示?
为了计算两个日期之间的月数,您需要提前知道开始日期和结束日期,以便计算实际月数(记住闰年等)它们之间。
如果你假设一个月为30天,下面的这个可能会有所帮助。
var start = DateTime.Today;
var end = DateTime.Today.AddDays(99);
var timeSpan = end.Subtract(start);
var months = (int)timeSpan.TotalDays/30;
var days = timeSpan.TotalDays % 30;
var str = string.Format("{0} months, {1} days", months, days);
如果你想年,月,日:
有点难度比它最初看起来...
我想你可以做这样的事情,它具有计算实际日历月而不是数月估计要30天或类似的优势。
var now = DateTime.Now;
var future = DateTime.Now.AddDays(new Random().NextDouble() * 365);
//dates above for example only
var xx = Enumerable.Range(0,int.MaxValue)
.Select(i => new{numMonths = i, date = now.AddMonths(i)})
.TakeWhile(x => x.date < future)
.Last();
var remainingDays = (future - xx.date).TotalDays;
Console.WriteLine("{0} months and {1} days",xx.numMonths,remainingDays);
如何定义“月”?那么2月份呢? – SLaks
是的,我无法弄清楚这个问题。我不知道如何定义月份。 – aratn0n
@SLaks - 我想你会将它定义为日历月份,例如“从开始日期到结束日期跨越的月份障碍数量,-1如果开始日期的月份日期>结束日期的月份日期。 – mbeckish