コード例 #1
0
        /// <summary>
        /// Проверка, что дата или диапазон определены с точностью до одного месяца
        /// </summary>
        public static bool IsMonthDefined(Pullenti.Ner.Referent obj)
        {
            DateReferent sd = obj as DateReferent;

            if (sd != null)
            {
                return(sd.Year > 0 && sd.Month > 0);
            }
            DateRangeReferent sdr = obj as DateRangeReferent;

            if (sdr != null)
            {
                if (sdr.DateFrom == null || sdr.DateTo == null)
                {
                    return(false);
                }
                if (sdr.DateFrom.Year == 0 || sdr.DateTo.Year != sdr.DateFrom.Year)
                {
                    return(false);
                }
                if (sdr.DateFrom.Month == 0 || sdr.DateTo.Month != sdr.DateFrom.Month)
                {
                    return(false);
                }
                return(true);
            }
            return(false);
        }
コード例 #2
0
        public override bool CanBeEquals(Pullenti.Ner.Referent obj, Pullenti.Ner.Core.ReferentsEqualType typ)
        {
            DateReferent sd = obj as DateReferent;

            if (sd == null)
            {
                return(false);
            }
            if (sd.IsRelative != IsRelative)
            {
                return(false);
            }
            if (sd.Century != Century)
            {
                return(false);
            }
            if (sd.Year != Year)
            {
                return(false);
            }
            if (sd.Month != Month)
            {
                return(false);
            }
            if (sd.Day != Day)
            {
                return(false);
            }
            if (sd.Hour != Hour)
            {
                return(false);
            }
            if (sd.Minute != Minute)
            {
                return(false);
            }
            if (sd.Second != Second)
            {
                return(false);
            }
            if (sd.Pointer != Pointer)
            {
                return(false);
            }
            if (sd.DayOfWeek > 0 && DayOfWeek > 0)
            {
                if (sd.DayOfWeek != DayOfWeek)
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #3
0
 public static int Compare(DateReferent d1, DateReferent d2)
 {
     if (d1.Year < d2.Year)
     {
         return(-1);
     }
     if (d1.Year > d2.Year)
     {
         return(1);
     }
     if (d1.Month < d2.Month)
     {
         return(-1);
     }
     if (d1.Month > d2.Month)
     {
         return(1);
     }
     if (d1.Day < d2.Day)
     {
         return(-1);
     }
     if (d1.Day > d2.Day)
     {
         return(1);
     }
     if (d1.Hour < d2.Hour)
     {
         return(-1);
     }
     if (d1.Hour > d2.Hour)
     {
         return(1);
     }
     if (d1.Minute < d2.Minute)
     {
         return(-1);
     }
     if (d1.Minute > d2.Minute)
     {
         return(1);
     }
     if (d1.Second > d2.Second)
     {
         return(-1);
     }
     if (d1.Second < d2.Second)
     {
         return(1);
     }
     return(0);
 }
コード例 #4
0
 internal static bool CanBeHigher(DateReferent hi, DateReferent lo)
 {
     if (lo == null || hi == null)
     {
         return(false);
     }
     if (lo.Higher == hi)
     {
         return(true);
     }
     if (lo.Higher != null && lo.Higher.CanBeEquals(hi, Pullenti.Ner.Core.ReferentsEqualType.WithinOneText))
     {
         return(true);
     }
     if (lo.Higher != null)
     {
         return(false);
     }
     if (lo.Hour >= 0)
     {
         if (hi.Hour >= 0)
         {
             return(false);
         }
         if (lo.Day > 0)
         {
             return(false);
         }
         return(true);
     }
     if (hi.Year > 0 && lo.Year <= 0)
     {
         if (hi.Month > 0)
         {
             return(false);
         }
         return(true);
     }
     return(false);
 }