DateTime dayStart;
DateTime dateEnd;
TimeSpan ts = dateEnt - dateStart;
印刷:...年(S)と...月(S)2つの日付の年と月の違いを見つける方法は?
私はそれを計算することができますか?
の.NET Framework 2.0
のC#
asp.netプロジェクト。
DateTime dayStart;
DateTime dateEnd;
TimeSpan ts = dateEnt - dateStart;
印刷:...年(S)と...月(S)2つの日付の年と月の違いを見つける方法は?
私はそれを計算することができますか?
の.NET Framework 2.0
のC#
asp.netプロジェクト。
これは、正確に計算したいものによって異なります。
TimeSpan
の値は年と月の長さが異なるため、正確な年と月に変換することはできません。あなたは、このようなおおよその年と月を計算することができます。
int years = ts.Days/365;
int months = (ts.Days % 365)/31;
あなたが正確な差をつけたい場合は、あなたがDateTime
値を比較する必要があります。
You should first read this articleJon Skeetから、特に「期間と期間の算術の紹介」のテキストは興味深いものです。
だから、あなたは一定の期間が月の変化であるときなど年に、
Noda-timeを定義する必要があり、すでにこのために多くの機能が含まれています。しかし、私はそれがまだリリースされていないと思う。
私はこのような何かがそれを行うだろうと思う:
DateTime date1 = new DateTime(1973, 07, 20);
DateTime date2 = new DateTime(2010, 01, 10);
// Swap them if one is bigger than the other
if (date2 < date1)
{
DateTime date3 = date2;
date2 = date1;
date1 = date3;
}
// Now date2 >= date1.
TimeSpan ts = date2 - date1;
// Total days
Console.WriteLine(ts.TotalDays);
// Total years
int years = date2.Year - date1.Year;
int months = 0;
// Total monts
if (date2.Month < date1.Month)
{
// example: March 2010 (3) and January 2011 (1); this should be 10 monts
// 12 - 3 + 1 = 10
// Take the 12 months of a year into account
months = 12 - date1.Month + date2.Month;
}
else
{
months = date2.Month - date1.Month;
}
Console.WriteLine("Years: {0}, Months: {1}", years, months);
編集を明確にする:12ヶ月は年に常に存在しているので、複雑な日付algorhitmsまたはスタッフのその種のいずれかの必要は、ありません(少なくともカレンダーでは)。
のDateTime DOB = "1981年10月18日" 年、月、日で年齢を計算すれば、以下の通り。 //生年月日 DateTime now = DateTime.Now;
// Swap them if one is bigger than the other
if (now < dob)
{
DateTime date3 = now;
now = dob;
dob = date3;
}
TimeSpan ts = now - dob;
//Debug.WriteLine(ts.TotalDays);
int years = 0;
int months = 0, days=0;
if ((now.Month <= dob.Month) && (now.Day < dob.Day)) // i.e. now = 03Jan15, dob = 23dec14
{
// example: March 2010 (3) and January 2011 (1); this should be 10 months. // 12 - 3 + 1 = 10
years = now.Year - dob.Year-1;
months = 12 - dob.Month + now.Month-1;
days = DateTime.DaysInMonth(dob.Year, dob.Month) - dob.Day + now.Day;
if(months==12)
{
months=0;
years +=1;
}
}
else if ((now.Month <= dob.Month) && (now.Day >= dob.Day)) // i.e. now = 23Jan15, dob = 20dec14
{
// example: March 2010 (3) and January 2011 (1); this should be 10 months. // 12 - 3 + 1 = 10
years = now.Year - dob.Year - 1;
months = 12 - dob.Month + now.Month;
days = now.Day - dob.Day;
if (months == 12)
{
months = 0;
years += 1;
}
}
else if ((now.Month > dob.Month) && (now.Day < dob.Day)) // i.e. now = 18oct15, dob = 22feb14
{
years = now.Year - dob.Year;
months = now.Month - dob.Month-1;
days = DateTime.DaysInMonth(dob.Year, dob.Month) - dob.Day + now.Day;
}
else if ((now.Month > dob.Month) && (now.Day >= dob.Day)) // i.e. now = 22oct15, dob = 18feb14
{
years = now.Year - dob.Year;
months = now.Month - dob.Month;
days = now.Day - dob.Day;
}
Debug.WriteLine("Years: {0}, Months: {1}, Days: {2}", years, months, days);
ここでは(多くの)定義が必要です。 2011年1月31日〜2011年1月2日の間に何ヶ月?分数が必要な場合は、どれくらいの月がありますか? –