として表示する方法C#で2つのDateTimesが指定されている場合、年と月の違いをどのように表示できますか?2つの日付の差分を00Y 00M
私は単純な引き算から来ているが、これは等の閏年、アカウントに任意の助け
おかげヶ月の異なる長さになりませんタイムスパンの基本的なarithmaticを行うことができます。
として表示する方法C#で2つのDateTimesが指定されている場合、年と月の違いをどのように表示できますか?2つの日付の差分を00Y 00M
私は単純な引き算から来ているが、これは等の閏年、アカウントに任意の助け
おかげヶ月の異なる長さになりませんタイムスパンの基本的なarithmaticを行うことができます。
基礎となる表現は、100ナノ秒で測定されているので、12:00午前0時から1月1日、1つのADダニ、かなり正しく閏年などを処理する減算:
DateTime date1 = ...
DateTime date2 = ...
// date2 must be after date1
TimeSpan difference = date2.Subtract(date1);
DateTime age=new DateTime(tsAge.Ticks);
int years = age.Years - 1;
int months = age.Month - 1;
Console.WriteLine("{0}Y, {1}M", years, months);
あなたはこれを試みることができる:
DateTime date1 = new DateTime(1954, 7, 30);
DateTime today = DateTime.Now;
TimeSpan span = today - date1;
DateTime age = DateTime.MinValue + span;
int years = age.Year - 1;
int months = age.Month - 1;
int days = age.Day - 1;
Console.WriteLine("years: {0}, months: {1}, days: {2}", years, months, days);
私はMinValueから始まるのが正しいとは思いません。あなたは価値がありますが、今月とは何の関係もありません。もちろん、その差は小さく、約31日ではなく28日です。しかし、あなたはまた、ダニを取って、同じサイズの12の部分に年を分割することができます... –
どの月にかかりますか?期間は、その年の特定の年または月に拘束されません。あなたが唯一の2つの日付の間の日数カウントすることができます:
Timspan span = date2 - date1;
Console.Writeline("Days between date1 and date2: {0}", span.Days);
DateTime.MinValueから数え
をちょうどスタートとして年間0001取ると、1月から数ヶ月をカウントします。これは実用的だとは思わない。
EDIT:
は別の考えを持っていました。あなたはdate1から月を数えることができます:
// primitive, inelegant, but should work if date1 < date2
int years = date2.Year - date1.Year;
int month = date2.Month - date1.Month;
if (month < 0)
{
years -= 1;
month += 12;
}
Console.Writeline("{0}Y {1}M", years, month);
ここでの問題は、日数を無視することです。結局それは良い解決策ではありません。
FWIWは、ここでは、あなたが期待する日付と出力の例を投稿できる私は
DateTime servicelength = new DateTime(DateTime.Now.Subtract(employee.StartDate).Ticks);
LengthOfService.Text = String.Format("{0}Y {1}M", servicelength.Year - 1, servicelength.Month - 1);
になってしまったものは? – shahkalpesh