可能重複:
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