Ejemplo n.º 1
0
        //# __________ PROTOCOL :: MISC __________ #//
        /**
         * Determine the difference between two dates.  The resultant
         * array contains three elements { years, months, days }.
         */
        public static int[] Difference(JwDate fromDate, JwDate toDate)
        {
            if ( fromDate.GetOrdinal() >= toDate.GetOrdinal() )
                return new int[]
                {
                    0, 0, 0
                };

            int fromYear   = fromDate.GetYear();
            int fromMonth  = fromDate.GetMonth();
            int fromDay    = fromDate.GetDay();
            int toYear    = toDate.GetYear();
            int toMonth   = toDate.GetMonth();
            int toDay     = toDate.GetDay();
            int diffYears  = toYear - fromYear;
            int diffMonths = toMonth - fromMonth;
            int diffDays   = toDay - fromDay;

            if ( diffDays < 0 )
            {
                diffDays += GetDaysInYearMonth(fromYear, fromMonth);
                diffMonths--;
            }
            if ( diffMonths < 0 )
            {
                diffMonths += 12;
                diffYears--;
            }
            if ( fromYear < 0 && toYear > 0 ) diffYears--;

            if ( diffYears < 0 )
            {
                diffYears = 0;
                diffMonths = 0;
                diffDays = 0;
            }
            return new int[] {diffYears, diffMonths, diffDays};
        }
Ejemplo n.º 2
0
        public JwDuration Difference(JwDate d)
        {
            int a = GetOrdinal();
            int b = d.GetOrdinal();
            int c = Math.Abs(a-b);

            JwDuration e = new JwDuration();
            e.AddDays(c);
            return e;
        }