【C#】DateDiff
ただの親近感のお話です。
public class DateDiff { public int Year { get; private set; } public int Month { get; private set; } public int Week { get; private set; } public int Day { get; private set; } public int Hour { get; private set; } public int Minute { get; private set; } public int Second { get; private set; } public DateDiff(DateTime d1, DateTime d2) { Year = GetSpendYear(d1, d2); Month = GetSpendMonth(d1, d2); var diff = d1 > d2 ? d1 - d2 : d2 - d1; Week = diff.Days / 7; Day = diff.Days; Hour = diff.Hours; Minute = diff.Minutes; Second = diff.Seconds; } private int GetSpendYear(DateTime d1, DateTime d2) { var bigDate = d1 > d2 ? d1 : d2; var smallDate = d1 > d2 ? d2 : d1; var yearDiff = bigDate.Year - smallDate.Year; var sameDay = new DateTime(bigDate.Year, smallDate.Month, smallDate.Day); if (sameDay > bigDate) yearDiff -= 1; return yearDiff; } private int GetSpendMonth(DateTime d1, DateTime d2) { var spendYear = GetSpendYear(d1, d2); var bigDate = d1 > d2 ? d1 : d2; var smallDate = d1 > d2 ? d2 : d1; var monthDiff = bigDate.Month - smallDate.Month; return (spendYear * 12) + monthDiff; } }
例えば2013/01/31と2013/02/01をぶちこんでMonthをとると1って出てくるけど、世の中のDateDiffってそんなもんですよ。