重複の可能性:
日数を人間が読める形式のテキストに変換
する開始と終了を指定して、年と月の差を計算するにはどうすればよいですか。
(終了日-開始日)を使用します。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);
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);
1か月の日数の問題を克服するには、年と月を見てください。
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
2つのオブジェクトの違いにより、TimeSpan
オブジェクトが作成されます。1か月の期間は月間で一貫していないため、オブジェクトはどのように月数でTimeSpan
表されますか?
2つの日付の間の月数を計算するには、開始日と終了日を事前に知っておく必要があります。これにより、それらの間の実際の月数(うるう年などを考慮)を計算できます。
年、月、日が必要な場合:
文字列にタイムスパンを使用してみてください...