コード例 #1
0
ファイル: Program.cs プロジェクト: bkrauska/AgeDifference
        static int AgeDifference(AgeRangeType ageType, System.DateTime startDate, System.DateTime endDate)
        {
            int diff = 0;

            var ageInYears = endDate.Year - startDate.Year;
            if (startDate > endDate.AddYears(-ageInYears))
                ageInYears -= 1;

            var newStart = startDate.AddYears(ageInYears);

            switch (ageType) {
                case AgeRangeType.Months:
                    var monthsOld = 0;
                    while (newStart.AddMonths(monthsOld + 1) <= endDate.Date) {
                        monthsOld++;
                    }
                    diff = ageInYears * 12 + monthsOld;
                    break;
                case AgeRangeType.Weeks:
                    var TS = endDate.Date - newStart.Date;
                    diff = ageInYears * 52 + (TS.Days / 7);
                    break;
                default:
                    var age = endDate.Year - startDate.Year;
                    if (startDate > endDate.AddYears(-age))
                        age -= 1;
                    diff = age;
                    break;
            }

            return diff;
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: bkrauska/AgeDifference
        static int OriginalAgeDifference(AgeRangeType ageType, System.DateTime startDate, System.DateTime endDate)
        {
            double diff = 0.0;

            System.TimeSpan TS = new System.TimeSpan(endDate.Ticks - startDate.Ticks);
            switch (ageType) {
                case AgeRangeType.Months:
                    diff = TS.TotalDays / 365 * 12;
                    break;
                case AgeRangeType.Weeks:
                    diff = TS.TotalDays / 365 * 52;
                    break;
                default:
                    diff = TS.TotalDays / 365;
                    break;
            }

            return (int)diff; // return Math.floor
        }