Пример #1
0
 public Proxy(DateValue value)
 {
     _value = value;
 }
Пример #2
0
        public static DateValue Add(DateValue dat, DayTimeDurationValue duration)
        {
            try
            {

                decimal seconds = (decimal)duration.LowPartValue.Ticks / TimeSpan.TicksPerSecond;
                decimal julian = dat.ToJulianInstant();
                julian += seconds;
                DateTimeValue dt = DateTimeValue.CreateFromJulianInstant(julian);
                if (dat.IsLocal)
                    return new DateValue(dt.S, dt.Value.Date);
                else
                    return new DateValue(dt.S, new DateTimeOffset(dt.Value.Date, dat.Value.Offset));
            }
            catch (ArgumentOutOfRangeException)
            {
                throw new XQueryException(Properties.Resources.FODT0001);
            }
        }
Пример #3
0
 private static DayTimeDurationValue Sub(DateValue dat1, DateValue dat2)
 {
     try
     {
         TimeSpan ts1;
         TimeSpan ts2;
         if (dat1.IsLocal && dat2.IsLocal)
         {
             ts1 = dat1.Value.DateTime - DateTime.MinValue;
             ts2 = dat2.Value.DateTime - DateTime.MinValue;
         }
         else
         {
             ts1 = dat1.Value.ToUniversalTime().DateTime - DateTime.MinValue;
             ts2 = dat2.Value.ToUniversalTime().DateTime - DateTime.MinValue;
         }
         if (dat1.S)
             ts1 = -ts1;
         if (dat2.S)
             ts2 = -ts2;
         return new DayTimeDurationValue(ts1 - ts2);
     }
     catch (OverflowException)
     {
         throw new XQueryException(Properties.Resources.FODT0001);
     }
 }
Пример #4
0
        public static DateValue Add(DateValue dat, YearMonthDurationValue duration)
        {
            try
            {

                Calendar calender = CultureInfo.InvariantCulture.Calendar;
                DateTime dt = dat.Value.DateTime;
                int year = dat.S ? -dt.Year : dt.Year - 1;
                int m = (dt.Month - 1) + duration.Months;
                year = year + duration.Years + m / 12;
                if (year >= 0)
                    year = year + 1;
                m = m % 12;
                if (m < 0)
                {
                    m += 12;
                    year -= 1;
                }
                m++;
                int day = Math.Min(dt.Day, calender.GetDaysInMonth(Math.Abs(year), m));
                if (year < 0)
                    dt = new DateTime(-year, m, day);
                else
                    dt = new DateTime(year, m, day);
                if (dat.IsLocal)
                    return new DateValue(year < 0, dt);
                else
                    return new DateValue(year < 0, new DateTimeOffset(dt, dat.Value.Offset));
            }
            catch (ArgumentOutOfRangeException)
            {
                throw new XQueryException(Properties.Resources.FODT0001);
            }
        }