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; }
// 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)); }