重複の可能性:
2 つの日付の日数差
選択した 2 つの日付の間の日数を知る必要があります。通常、日付を比較するには DateTime.CompareTo を使用しますが、ここでは状況が異なります。前もって感謝し、ばかげた質問で申し訳ありません。
重複の可能性:
2 つの日付の日数差
選択した 2 つの日付の間の日数を知る必要があります。通常、日付を比較するには DateTime.CompareTo を使用しますが、ここでは状況が異なります。前もって感謝し、ばかげた質問で申し訳ありません。
これを使って:
int DaysBetween(DateTime d1, DateTime d2) {
TimeSpan span = d2.Subtract(d1);
return Math.Abs((int)span.TotalDays);
}
///
Console.WriteLine(DaysBetween(DateTime.Now.AddDays(10), DateTime.Now) );
10を返します
これを試してください(.net TimeSpanクラスを使用して改善できます)
public static int DateDiff(string Interval, DateTime Date1, DateTime Date2)
{
int difVale = 0;
DateTime startDate, endDate;
if (Date1 > Date2)
{
endDate = Date1;
startDate = Date2;
}
else
{
startDate = Date1;
endDate = Date2;
}
switch (Interval)
{
case "D":
case "d":
for (int nYear = startDate.Year; nYear < endDate.Year; nYear++)
{
difVale += new DateTime(nYear, 12, 31).DayOfYear;
}
difVale += endDate.DayOfYear - startDate.DayOfYear;
break;
case "M":
case "m":
difVale = endDate.Year - startDate.Year;
difVale = difVale * 12;
difVale += endDate.Month - startDate.Month;
break;
case "Y":
case "y":
difVale = endDate.Year - startDate.Year;
break;
}
if (Date1 > Date2)
{
difVale = -difVale;
}
return difVale;
}
元の解決策ではありませんが:
DateTime d1=DateTime.MinValue;
DateTime d2=DateTime.MaxValue;
TimeSpan span=d2-d1;
Console.WriteLine
( "There're {0} days between {1} and {2}" , span.TotalDays, d1.ToString(), d2.ToString() );