private static bool TryParseDateMicrosoft(string text, DateParseHandling dateParseHandling, DateTimeZoneHandling dateTimeZoneHandling, out object dt) { string text2 = text.Substring(6, text.Length - 8); DateTimeKind dateTimeKind = DateTimeKind.Utc; int num = text2.IndexOf('+', 1); if (num == -1) { num = text2.IndexOf('-', 1); } TimeSpan timeSpan = TimeSpan.Zero; if (num != -1) { dateTimeKind = DateTimeKind.Local; timeSpan = DateTimeUtils.ReadOffset(text2.Substring(num)); text2 = text2.Substring(0, num); } long javaScriptTicks = long.Parse(text2, NumberStyles.Integer, CultureInfo.InvariantCulture); DateTime dateTime = DateTimeUtils.ConvertJavaScriptTicksToDateTime(javaScriptTicks); if (dateParseHandling == DateParseHandling.DateTimeOffset) { dt = new DateTimeOffset(dateTime.Add(timeSpan).Ticks, timeSpan); return(true); } DateTime value; switch (dateTimeKind) { case DateTimeKind.Unspecified: value = DateTime.SpecifyKind(dateTime.ToLocalTime(), DateTimeKind.Unspecified); goto IL_D1; case DateTimeKind.Local: value = dateTime.ToLocalTime(); goto IL_D1; } value = dateTime; IL_D1: dt = DateTimeUtils.EnsureDateTime(value, dateTimeZoneHandling); return(true); }