예제 #1
0
        internal CalendarPeriod(string s, ComplianceTracker tracker)
        {
            int num = s.IndexOf('/');

            if (num <= 0 || s.Length - 1 == num)
            {
                tracker.SetComplianceStatus(ComplianceStatus.InvalidValueFormat, CalendarStrings.InvalidTimeFormat);
                this.start            = CalendarCommon.MinDateTime;
                this.end              = CalendarCommon.MinDateTime;
                this.duration         = TimeSpan.Zero;
                this.isExplicitPeriod = false;
                return;
            }
            DateTime dateTime = CalendarCommon.ParseDateTime(s.Substring(0, num), tracker);
            char     c        = s[num + 1];

            if (c == '+' || c == '-' || c == 'P')
            {
                TimeSpan t = CalendarCommon.ParseDuration(s.Substring(num + 1), tracker);
                this.start            = dateTime;
                this.end              = dateTime + t;
                this.duration         = t;
                this.isExplicitPeriod = false;
                return;
            }
            DateTime d = CalendarCommon.ParseDateTime(s.Substring(num + 1), tracker);

            this.start            = dateTime;
            this.end              = d;
            this.duration         = dateTime - d;
            this.isExplicitPeriod = true;
        }
예제 #2
0
        // Token: 0x06000715 RID: 1813 RVA: 0x00028264 File Offset: 0x00026464
        private TimeSpan ReadValueAsTimeSpan(CalendarValueSeparators?expectedSeparators)
        {
            this.reader.AssertValidState(ContentLineNodeType.Parameter | ContentLineNodeType.Property);
            string s = this.ReadValueAsString(expectedSeparators).Trim();

            if (CalendarValueType.UtcOffset == this.ValueType)
            {
                return(CalendarCommon.ParseUtcOffset(s, this.reader.ComplianceTracker));
            }
            this.CheckType(CalendarValueType.Duration);
            return(CalendarCommon.ParseDuration(s, this.reader.ComplianceTracker));
        }