可能重复:
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天这样的事情。
答案 0 :(得分:4)
比起初看起来有点难......
我想你可以做这样的事情,它具有计算实际日历月数的优势,而不是估计数月为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);
答案 1 :(得分:1)
如果您假设一个月为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);
答案 2 :(得分:0)
要克服一个月内的问题天数,请查看年份和月份
DateTime d1 = New DateTime(2002, 1, 1);
DateTime d2 = New DateTime(2000, 10, 1);
int years = Math.Abs((d1.Year - d2.Year));
int months = ((years * 12) + Math.Abs((d1.Month - d2.Month)));
答案 3 :(得分:0)
两个DateTime
对象的差异导致TimeSpan
个对象。由于月份跨越一个月的时间在几个月内不一致,TimeSpan
对象如何表示几个月?
为了计算两个日期之间的月数,您需要提前知道开始日期和结束日期,以便计算实际的月数(记住闰年等)它们。
答案 4 :(得分:0)
如果你想要年,月,日:
答案 5 :(得分:-3)
尝试将时间跨度用于字符串...