我使用 (结束日期 - 开始日期).TotalDays 它返回总天数。例如,145 天
但我不想要总天数。
可以将 145 天转换为 3 个月和 25 天,如下所示。
我使用 (结束日期 - 开始日期).TotalDays 它返回总天数。例如,145 天
但我不想要总天数。
可以将 145 天转换为 3 个月和 25 天,如下所示。
比最初看起来要难一些...
我想你可以做这样的事情,它的优点是计算实际的日历月,而不是估计月份是 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);
如果您假设一个月为 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);
如果你想要年、月、日:
要克服一个月的天数问题,只需查看年份和月份
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)));
两个DateTime
对象的差异导致一个TimeSpan
对象。由于一个月所跨越的时间在月份之间是不一致的,那么一个TimeSpan
对象如何用几个月来表示呢?
为了计算两个日期之间的月数,您需要提前知道开始日期和结束日期,以便计算它们之间的实际月数(记住闰年等)。
尝试使用时间跨度来串...