protected string GetOffset(DateTime d, DateFormatHandling dateFormatHandling) { char[] chars = new char[8]; int pos = DateTimeUtils.WriteDateTimeOffset(chars, 0, DateTime.SpecifyKind(d, DateTimeKind.Local).GetUtcOffset(), dateFormatHandling); return new string(chars, 0, pos); }
protected string GetOffset(DateTime d, DateFormatHandling dateFormatHandling) { StringWriter sw = new StringWriter(); JsonConvert.WriteDateTimeOffset(sw, DateTime.SpecifyKind(d, DateTimeKind.Local).GetUtcOffset(), dateFormatHandling); sw.Flush(); return sw.ToString(); }
// Token: 0x06000B4A RID: 2890 RVA: 0x0004E620 File Offset: 0x0004C820 public static string ToString(DateTimeOffset value, DateFormatHandling format) { string result; using (StringWriter stringWriter = StringUtils.CreateStringWriter(64)) { stringWriter.Write('"'); DateTimeUtils.WriteDateTimeOffsetString(stringWriter, value, format, null, CultureInfo.InvariantCulture); stringWriter.Write('"'); result = stringWriter.ToString(); } return(result); }
internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format, string formatString, CultureInfo culture) { if (string.IsNullOrEmpty(formatString)) { char[] chars = new char[64]; int pos = WriteDateTimeString(chars, 0, value, null, value.Kind, format); writer.Write(chars, 0, pos); } else { writer.Write(value.ToString(formatString, culture)); } }
public static string ToString(DateTime value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling) { DateTime value2 = DateTimeUtils.EnsureDateTime(value, timeZoneHandling); string result; using (StringWriter stringWriter = StringUtils.CreateStringWriter(64)) { stringWriter.Write('"'); DateTimeUtils.WriteDateTimeString(stringWriter, value2, format, null, CultureInfo.InvariantCulture); stringWriter.Write('"'); result = stringWriter.ToString(); } return(result); }
public static string ToString(DateTime value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling) { string str; DateTime dateTime = DateTimeUtils.EnsureDateTime(value, timeZoneHandling); using (StringWriter stringWriter = StringUtils.CreateStringWriter(64)) { stringWriter.Write('\"'); DateTimeUtils.WriteDateTimeString(stringWriter, dateTime, format, null, CultureInfo.InvariantCulture); stringWriter.Write('\"'); str = stringWriter.ToString(); } return(str); }
/// <summary> /// Tests the DateFormatHandling property in a JSON serializer settings object. /// </summary> /// <param name="dateFormatHandling">Expected DateFormatHandling.</param> /// <returns>The same JSON serializer settings test builder.</returns> public IAndJsonSerializerSettingsTestBuilder WithDateFormatHandling(DateFormatHandling dateFormatHandling) { this.jsonSerializerSettings.DateFormatHandling = dateFormatHandling; this.validations.Add((expected, actual) => { if (!CommonValidator.CheckEquality(expected.DateFormatHandling, actual.DateFormatHandling)) { this.ThrowNewJsonResultAssertionException( string.Format("{0} date format handling", expected.DateFormatHandling), string.Format("in fact found {0}", actual.DateFormatHandling)); } }); return(this); }
// Token: 0x060005EC RID: 1516 RVA: 0x00029950 File Offset: 0x00027B50 internal static int smethod_28(object object_0, int int_2, TimeSpan timeSpan_0, DateFormatHandling dateFormatHandling_0) { object_0[int_2++] = ((timeSpan_0.Ticks >= 0L) ? 43 : 45); int int_3 = Math.Abs(timeSpan_0.Hours); Class25.smethod_27(object_0, int_2, int_3, 2); int_2 += 2; if (dateFormatHandling_0 == DateFormatHandling.IsoDateFormat) { object_0[int_2++] = 58; } int int_4 = Math.Abs(timeSpan_0.Minutes); Class25.smethod_27(object_0, int_2, int_4, 2); int_2 += 2; return(int_2); }
internal static void WriteDateTimeString( TextWriter writer, DateTime value, DateFormatHandling format, string formatString, CultureInfo culture) { if (string.IsNullOrEmpty(formatString)) { char[] chArray = new char[64]; int count = DateTimeUtils.WriteDateTimeString(chArray, 0, value, new TimeSpan?(), value.Kind, format); writer.Write(chArray, 0, count); } else { writer.Write(value.ToString(formatString, (IFormatProvider)culture)); } }
internal static void WriteDateTimeOffsetString( TextWriter writer, DateTimeOffset value, DateFormatHandling format, string formatString, CultureInfo culture) { if (string.IsNullOrEmpty(formatString)) { char[] chArray = new char[64]; int count = DateTimeUtils.WriteDateTimeString(chArray, 0, format == DateFormatHandling.IsoDateFormat ? value.DateTime : value.UtcDateTime, new TimeSpan?(value.Offset), DateTimeKind.Local, format); writer.Write(chArray, 0, count); } else { writer.Write(value.ToString(formatString, (IFormatProvider)culture)); } }
/// <summary> /// 引用另一个对象的设置属性。 /// </summary> /// <param name="other"></param> public virtual void Reference(SerializeOption other) { CamelNaming = other.CamelNaming; Converters.AddRange(other.Converters); IgnoreType = other.IgnoreType; Indent = other.Indent; ReferenceLoopHandling = other.ReferenceLoopHandling; DateFormatHandling = other.DateFormatHandling; if (other.InclusiveNames != null) { InclusiveNames = InclusiveNames == null ? other.InclusiveNames : InclusiveNames.Union(other.InclusiveNames).Distinct().ToArray(); } if (other.ExclusiveNames != null) { ExclusiveNames = ExclusiveNames == null ? other.ExclusiveNames : ExclusiveNames.Union(other.ExclusiveNames).Distinct().ToArray(); } if (other.InclusiveMembers != null) { if (InclusiveMembers != null) { InclusiveMembers.AddRange(other.InclusiveMembers); } else { InclusiveMembers = other.InclusiveMembers; } } if (other.ExclusiveMembers != null) { if (ExclusiveMembers != null) { ExclusiveMembers.AddRange(other.ExclusiveMembers); } else { ExclusiveMembers = other.ExclusiveMembers; } } }
internal static int WriteDateTimeOffset( char[] chars, int start, TimeSpan offset, DateFormatHandling format) { chars[start++] = offset.Ticks >= 0L ? '+' : '-'; int num1 = Math.Abs(offset.Hours); DateTimeUtils.CopyIntToCharArray(chars, start, num1, 2); start += 2; if (format == DateFormatHandling.IsoDateFormat) { chars[start++] = ':'; } int num2 = Math.Abs(offset.Minutes); DateTimeUtils.CopyIntToCharArray(chars, start, num2, 2); start += 2; return(start); }
public int WriteDateTimeOffset(char[] chars, int start, TimeSpan offset, DateFormatHandling format) { chars[start++] = (offset.Ticks >= 0L) ? '+' : '-'; int absHours = Math.Abs(offset.Hours); CopyIntToCharArray(chars, start, absHours, 2); start += 2; if (format == DateFormatHandling.IsoDateFormat) { chars[start++] = ':'; } int absMinutes = Math.Abs(offset.Minutes); CopyIntToCharArray(chars, start, absMinutes, 2); start += 2; return(start); }
internal static void WriteDateTimeOffset(TextWriter writer, TimeSpan offset, DateFormatHandling format) { writer.Write(offset.Ticks >= 0L ? "+" : "-"); int num1 = Math.Abs(offset.Hours); if (num1 < 10) { writer.Write(0); } writer.Write(num1); if (format == DateFormatHandling.IsoDateFormat) { writer.Write(':'); } int num2 = Math.Abs(offset.Minutes); if (num2 < 10) { writer.Write(0); } writer.Write(num2); }
private static string TestDateTimeFormat <T>(T value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling) { string date = null; if (value is DateTime) { date = JsonConvert.ToString((DateTime)(object)value, format, timeZoneHandling); } else { #if !NET20 date = JsonConvert.ToString((DateTimeOffset)(object)value, format); #endif } Console.WriteLine(format.ToString("g") + "-" + timeZoneHandling.ToString("g") + ": " + date); if (timeZoneHandling == DateTimeZoneHandling.RoundtripKind) { T parsed = JsonConvert.DeserializeObject <T>(date); try { Assert.AreEqual(value, parsed); } catch (Exception) { long valueTicks = GetTicks(value); long parsedTicks = GetTicks(parsed); valueTicks = (valueTicks / 10000) * 10000; Assert.AreEqual(valueTicks, parsedTicks); } } return(date.Trim('"')); }
// Token: 0x06000D2D RID: 3373 RVA: 0x0004CEA8 File Offset: 0x0004B0A8 internal static void WriteDateTimeOffsetString(TextWriter writer, DateTimeOffset value, DateFormatHandling format, [Nullable(2)] string formatString, CultureInfo culture) { if (StringUtils.IsNullOrEmpty(formatString)) { char[] array = new char[64]; int count = DateTimeUtils.WriteDateTimeString(array, 0, (format == DateFormatHandling.IsoDateFormat) ? value.DateTime : value.UtcDateTime, new TimeSpan?(value.Offset), DateTimeKind.Local, format); writer.Write(array, 0, count); return; } writer.Write(value.ToString(formatString, culture)); }
// Token: 0x06000D24 RID: 3364 // RVA: 0x0004A774 File Offset: 0x00048974 internal static int WriteDateTimeString(char[] chars, int start, DateTime value, TimeSpan? offset, DateTimeKind kind, DateFormatHandling format) { int num2; if (format == DateFormatHandling.MicrosoftDateFormat) { TimeSpan offset2 = offset ?? DateTimeUtils.GetUtcOffset(value); long num = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(value, offset2); "\\/Date(".CopyTo(0, chars, start, 7); num2 = start + 7; string text = num.ToString(CultureInfo.InvariantCulture); text.CopyTo(0, chars, num2, text.Length); num2 += text.Length; switch (kind) { case DateTimeKind.Unspecified: if (value != DateTime.MaxValue && value != DateTime.MinValue) { num2 = DateTimeUtils.WriteDateTimeOffset(chars, num2, offset2, format); } break; case DateTimeKind.Local: num2 = DateTimeUtils.WriteDateTimeOffset(chars, num2, offset2, format); break; } ")\\/".CopyTo(0, chars, num2, 3); num2 += 3; } else { num2 = DateTimeUtils.WriteDefaultIsoDate(chars, start, value); switch (kind) { case DateTimeKind.Utc: chars[num2++] = 'Z'; break; case DateTimeKind.Local: num2 = DateTimeUtils.WriteDateTimeOffset(chars, num2, offset ?? DateTimeUtils.GetUtcOffset(value), format); break; } } return num2; }
internal static void WriteDateTimeOffsetString(TextWriter writer, DateTimeOffset value, DateFormatHandling format, string formatString, CultureInfo culture) { if (string.IsNullOrEmpty(formatString)) { char[] chars = new char[64]; int pos = WriteDateTimeString(chars, 0, (format == DateFormatHandling.IsoDateFormat) ? value.DateTime : value.UtcDateTime, value.Offset, DateTimeKind.Local, format); writer.Write(chars, 0, pos); } else { writer.Write(value.ToString(formatString, culture)); } }
internal static void WriteDateTimeOffsetString(TextWriter writer, DateTimeOffset value, DateFormatHandling format, string?formatString, CultureInfo culture) { if (StringUtils.IsNullOrEmpty(formatString)) { char[] chars = new char[64]; int pos = WriteDateTimeString(chars, 0, (format == DateFormatHandling.IsoDateFormat) ? value.DateTime : value.UtcDateTime, value.Offset, DateTimeKind.Local, format); writer.Write(chars, 0, pos); } else { writer.Write(value.ToString(formatString, culture)); } }
internal static int WriteDateTimeString(char[] chars, int start, DateTime value, TimeSpan?offset, DateTimeKind kind, DateFormatHandling format) { int num2; if (format == DateFormatHandling.MicrosoftDateFormat) { TimeSpan offset2 = offset ?? value.GetUtcOffset(); long num = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(value, offset2); "\\/Date(".CopyTo(0, chars, start, 7); num2 = start + 7; string text = num.ToString(CultureInfo.InvariantCulture); text.CopyTo(0, chars, num2, text.Length); num2 += text.Length; switch (kind) { case DateTimeKind.Unspecified: if (value != DateTime.MaxValue && value != DateTime.MinValue) { num2 = DateTimeUtils.WriteDateTimeOffset(chars, num2, offset2, format); } break; case DateTimeKind.Local: num2 = DateTimeUtils.WriteDateTimeOffset(chars, num2, offset2, format); break; } ")\\/".CopyTo(0, chars, num2, 3); num2 += 3; } else { num2 = DateTimeUtils.WriteDefaultIsoDate(chars, start, value); switch (kind) { case DateTimeKind.Utc: chars[num2++] = 'Z'; break; case DateTimeKind.Local: num2 = DateTimeUtils.WriteDateTimeOffset(chars, num2, offset ?? value.GetUtcOffset(), format); break; } } return(num2); }
internal static int WriteDateTimeString(char[] chars, int start, DateTime value, TimeSpan? offset, DateTimeKind kind, DateFormatHandling format) { int pos = start; if (format == DateFormatHandling.MicrosoftDateFormat) { TimeSpan o = offset ?? value.GetUtcOffset(); long javaScriptTicks = ConvertDateTimeToJavaScriptTicks(value, o); @"\/Date(".CopyTo(0, chars, pos, 7); pos += 7; string ticksText = javaScriptTicks.ToString(CultureInfo.InvariantCulture); ticksText.CopyTo(0, chars, pos, ticksText.Length); pos += ticksText.Length; switch (kind) { case DateTimeKind.Unspecified: if (value != DateTime.MaxValue && value != DateTime.MinValue) { pos = WriteDateTimeOffset(chars, pos, o, format); } break; case DateTimeKind.Local: pos = WriteDateTimeOffset(chars, pos, o, format); break; } @")\/".CopyTo(0, chars, pos, 3); pos += 3; } else { pos = WriteDefaultIsoDate(chars, pos, value); switch (kind) { case DateTimeKind.Local: pos = WriteDateTimeOffset(chars, pos, offset ?? value.GetUtcOffset(), format); break; case DateTimeKind.Utc: chars[pos++] = 'Z'; break; } } return pos; }
internal static void WriteDateTimeOffsetString(TextWriter writer, DateTimeOffset value, DateFormatHandling format, string formatString, CultureInfo culture) { if (!string.IsNullOrEmpty(formatString)) { writer.Write(value.ToString(formatString, culture)); return; } char[] chrArray = new char[64]; int num = DateTimeUtils.WriteDateTimeString(chrArray, 0, (format == DateFormatHandling.IsoDateFormat ? value.DateTime : value.UtcDateTime), new TimeSpan?(value.Offset), DateTimeKind.Local, format); writer.Write(chrArray, 0, num); }
// Token: 0x060005ED RID: 1517 RVA: 0x000299C4 File Offset: 0x00027BC4 internal static void IxisRjgvuh(TextWriter textWriter_0, DateTimeOffset dateTimeOffset_0, DateFormatHandling dateFormatHandling_0, string string_0, IFormatProvider iformatProvider_0) { if (string.IsNullOrEmpty(string_0)) { char[] array = new char[64]; int count = Class25.smethod_25(array, 0, (dateFormatHandling_0 == DateFormatHandling.IsoDateFormat) ? dateTimeOffset_0.DateTime : dateTimeOffset_0.UtcDateTime, new TimeSpan?(dateTimeOffset_0.Offset), DateTimeKind.Local, dateFormatHandling_0); textWriter_0.Write(array, 0, count); return; } textWriter_0.Write(dateTimeOffset_0.ToString(string_0, iformatProvider_0)); }
internal static void WriteDateTimeString(TextWriter writer, DateTime value, TimeSpan offset, DateTimeKind kind, DateFormatHandling format, char quoteChar) { if (format == DateFormatHandling.MicrosoftDateFormat) { long javaScriptTicks = ConvertDateTimeToJavaScriptTicks(value, offset); writer.Write(quoteChar); writer.Write(@"\/Date("); writer.Write(javaScriptTicks); switch (kind) { case DateTimeKind.Unspecified: if (value != DateTime.MaxValue && value != DateTime.MinValue) { WriteDateTimeOffset(writer, offset, format); } break; case DateTimeKind.Local: WriteDateTimeOffset(writer, offset, format); break; } writer.Write(@")\/"); writer.Write(quoteChar); } else { writer.Write(quoteChar); writer.Write(value.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFF", CultureInfo.InvariantCulture)); switch (kind) { case DateTimeKind.Local: WriteDateTimeOffset(writer, offset, format); break; case DateTimeKind.Utc: writer.Write("Z"); break; } writer.Write(quoteChar); } }
public static void WriteDateTimeOffsetString(TextWriter writer, DateTimeOffset value, DateFormatHandling format, string formatString, CultureInfo culture) { if (string.IsNullOrEmpty(formatString)) { char[] array = new char[64]; int count = DateTimeUtils.WriteDateTimeString(array, 0, (format == DateFormatHandling.IsoDateFormat) ? value.DateTime : value.UtcDateTime, new TimeSpan?(value.Offset), DateTimeKind.Local, format); writer.Write(array, 0, count); return; } writer.Write(value.ToString(formatString, culture)); }
internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format, char quoteChar) { WriteDateTimeString(writer, value, value.GetUtcOffset(), value.Kind, format, quoteChar); }
/// <summary> /// Converts the <see cref="DateTimeOffset"/> to its JSON string representation using the <see cref="DateFormatHandling"/> specified. /// </summary> /// <param name="value">The value to convert.</param> /// <param name="format">The format the date will be converted to.</param> /// <returns>A JSON string representation of the <see cref="DateTimeOffset"/>.</returns> public static string ToString(DateTimeOffset value, DateFormatHandling format) { return(ToString(value, format, '"')); }
internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format) { JsonConvert.WriteDateTimeString(writer, value, DateTimeUtils.GetUtcOffset(value), value.Kind, format); }
// Token: 0x06000D23 RID: 3363 // RVA: 0x0004A720 File Offset: 0x00048920 internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format, string formatString, CultureInfo culture) { if (string.IsNullOrEmpty(formatString)) { char[] array = new char[64]; int count = DateTimeUtils.WriteDateTimeString(array, 0, value, null, value.Kind, format); writer.Write(array, 0, count); return; } writer.Write(value.ToString(formatString, culture)); }
internal static int WriteDateTimeString(char[] chars, int start, DateTime value, TimeSpan?offset, DateTimeKind kind, DateFormatHandling format) { TimeSpan?nullable; int length = start; if (format != DateFormatHandling.MicrosoftDateFormat) { length = DateTimeUtils.WriteDefaultIsoDate(chars, length, value); if (kind == DateTimeKind.Utc) { int num = length; length = num + 1; chars[num] = 'Z'; } else if (kind == DateTimeKind.Local) { char[] chrArray = chars; int num1 = length; nullable = offset; length = DateTimeUtils.WriteDateTimeOffset(chrArray, num1, (nullable.HasValue ? nullable.GetValueOrDefault() : value.GetUtcOffset()), format); } } else { nullable = offset; TimeSpan timeSpan = (nullable.HasValue ? nullable.GetValueOrDefault() : value.GetUtcOffset()); long javaScriptTicks = DateTimeUtils.ConvertDateTimeToJavaScriptTicks(value, timeSpan); "\\/Date(".CopyTo(0, chars, length, 7); length += 7; string str = javaScriptTicks.ToString(CultureInfo.InvariantCulture); str.CopyTo(0, chars, length, str.Length); length += str.Length; if (kind != DateTimeKind.Unspecified) { if (kind == DateTimeKind.Local) { length = DateTimeUtils.WriteDateTimeOffset(chars, length, timeSpan, format); } } else if (value != DateTime.MaxValue && value != DateTime.MinValue) { length = DateTimeUtils.WriteDateTimeOffset(chars, length, timeSpan, format); } ")\\/".CopyTo(0, chars, length, 3); length += 3; } return(length); }
// Token: 0x06000D27 RID: 3367 // RVA: 0x0004A980 File Offset: 0x00048B80 internal static int WriteDateTimeOffset(char[] chars, int start, TimeSpan offset, DateFormatHandling format) { chars[start++] = ((offset.Ticks >= 0L) ? '+' : '-'); int value = Math.Abs(offset.Hours); DateTimeUtils.CopyIntToCharArray(chars, start, value, 2); start += 2; if (format == DateFormatHandling.IsoDateFormat) { chars[start++] = ':'; } int value2 = Math.Abs(offset.Minutes); DateTimeUtils.CopyIntToCharArray(chars, start, value2, 2); start += 2; return start; }
internal static int WriteDateTimeString(char[] chars, int start, DateTime value, TimeSpan?offset, DateTimeKind kind, DateFormatHandling format) { TimeSpan?nullable; int num = start; if (format != DateFormatHandling.MicrosoftDateFormat) { num = WriteDefaultIsoDate(chars, num, value); if (kind != DateTimeKind.Utc) { if (kind == DateTimeKind.Local) { nullable = offset; num = WriteDateTimeOffset(chars, num, nullable.HasValue ? nullable.GetValueOrDefault() : value.GetUtcOffset(), format); } return(num); } chars[num++] = 'Z'; return(num); } nullable = offset; TimeSpan span = nullable.HasValue ? nullable.GetValueOrDefault() : value.GetUtcOffset(); long num2 = ConvertDateTimeToJavaScriptTicks(value, span); @"\/Date(".CopyTo(0, chars, num, 7); num += 7; string str = num2.ToString(CultureInfo.InvariantCulture); str.CopyTo(0, chars, num, str.Length); num += str.Length; if (kind != DateTimeKind.Unspecified) { if (kind == DateTimeKind.Local) { num = WriteDateTimeOffset(chars, num, span, format); } } else if ((value != DateTime.MaxValue) && (value != DateTime.MinValue)) { num = WriteDateTimeOffset(chars, num, span, format); } @")\/".CopyTo(0, chars, num, 3); return(num + 3); }
// Token: 0x060005E9 RID: 1513 RVA: 0x0002975C File Offset: 0x0002795C internal static int smethod_25(char[] char_0, int int_2, DateTime dateTime_0, TimeSpan?nullable_0, DateTimeKind dateTimeKind_0, DateFormatHandling dateFormatHandling_0) { int num2; if (dateFormatHandling_0 == DateFormatHandling.MicrosoftDateFormat) { TimeSpan timeSpan_ = nullable_0 ?? dateTime_0.smethod_0(); long num = Class25.smethod_7(dateTime_0, timeSpan_); "\\/Date(".CopyTo(0, char_0, int_2, 7); num2 = int_2 + 7; string text = num.ToString(CultureInfo.InvariantCulture); text.CopyTo(0, char_0, num2, text.Length); num2 += text.Length; if (dateTimeKind_0 != DateTimeKind.Unspecified) { if (dateTimeKind_0 == DateTimeKind.Local) { num2 = Class25.smethod_28(char_0, num2, timeSpan_, dateFormatHandling_0); } } else if (dateTime_0 != DateTime.MaxValue && dateTime_0 != DateTime.MinValue) { num2 = Class25.smethod_28(char_0, num2, timeSpan_, dateFormatHandling_0); } ")\\/".CopyTo(0, char_0, num2, 3); num2 += 3; } else { num2 = Class25.smethod_26(char_0, int_2, dateTime_0); if (dateTimeKind_0 != DateTimeKind.Utc) { if (dateTimeKind_0 == DateTimeKind.Local) { num2 = Class25.smethod_28(char_0, num2, nullable_0 ?? dateTime_0.smethod_0(), dateFormatHandling_0); } } else { char_0[num2++] = 'Z'; } } return(num2); }
/// <summary> /// Converts the <see cref="DateTime"/> to its JSON string representation using the <see cref="DateFormatHandling"/> specified. /// </summary> /// <param name="value">The value to convert.</param> /// <param name="format">The format the date will be converted to.</param> /// <param name="timeZoneHandling">The time zone handling when the date is converted to a string.</param> /// <returns>A JSON string representation of the <see cref="DateTime"/>.</returns> public static string ToString(DateTime value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling) { DateTime updatedDateTime = DateTimeUtils.EnsureDateTime(value, timeZoneHandling); using (StringWriter writer = StringUtils.CreateStringWriter(64)) { writer.Write('"'); DateTimeUtils.WriteDateTimeString(writer, updatedDateTime, format, null, CultureInfo.InvariantCulture); writer.Write('"'); return writer.ToString(); } }
/// <summary> /// Converts the <see cref="DateTimeOffset"/> to its JSON string representation using the <see cref="DateFormatHandling"/> specified. /// </summary> /// <param name="value">The value to convert.</param> /// <param name="format">The format the date will be converted to.</param> /// <returns>A JSON string representation of the <see cref="DateTimeOffset"/>.</returns> public static string ToString(DateTimeOffset value, DateFormatHandling format) { using (StringWriter writer = StringUtils.CreateStringWriter(64)) { writer.Write('"'); DateTimeUtils.WriteDateTimeOffsetString(writer, value, format, null, CultureInfo.InvariantCulture); writer.Write('"'); return writer.ToString(); } }
internal static int WriteDateTimeOffset(char[] chars, int start, TimeSpan offset, DateFormatHandling format) { chars[start++] = (offset.Ticks >= 0L) ? '+' : '-'; int absHours = Math.Abs(offset.Hours); CopyIntToCharArray(chars, start, absHours, 2); start += 2; if (format == DateFormatHandling.IsoDateFormat) { chars[start++] = ':'; } int absMinutes = Math.Abs(offset.Minutes); CopyIntToCharArray(chars, start, absMinutes, 2); start += 2; return start; }
internal static void WriteDateTimeOffsetString(TextWriter writer, DateTimeOffset value, DateFormatHandling format, string formatString, CultureInfo culture) { if (string.IsNullOrEmpty(formatString)) { char[] chars = new char[0x40]; int count = WriteDateTimeString(chars, 0, (format == DateFormatHandling.IsoDateFormat) ? value.DateTime : value.UtcDateTime, new TimeSpan?(value.Offset), DateTimeKind.Local, format); writer.Write(chars, 0, count); } else { writer.Write(value.ToString(formatString, culture)); } }
internal static int WriteDateTimeString(char[] chars, int start, DateTime value, TimeSpan?offset, DateTimeKind kind, DateFormatHandling format) { int pos = start; if (format == DateFormatHandling.MicrosoftDateFormat) { TimeSpan o = offset ?? value.GetUtcOffset(); long javaScriptTicks = ConvertDateTimeToJavaScriptTicks(value, o); @"\/Date(".CopyTo(0, chars, pos, 7); pos += 7; string ticksText = javaScriptTicks.ToString(CultureInfo.InvariantCulture); ticksText.CopyTo(0, chars, pos, ticksText.Length); pos += ticksText.Length; switch (kind) { case DateTimeKind.Unspecified: if (value != DateTime.MaxValue && value != DateTime.MinValue) { pos = WriteDateTimeOffset(chars, pos, o, format); } break; case DateTimeKind.Local: pos = WriteDateTimeOffset(chars, pos, o, format); break; } @")\/".CopyTo(0, chars, pos, 3); pos += 3; } else { pos = WriteDefaultIsoDate(chars, pos, value); switch (kind) { case DateTimeKind.Local: pos = WriteDateTimeOffset(chars, pos, offset ?? value.GetUtcOffset(), format); break; case DateTimeKind.Utc: chars[pos++] = 'Z'; break; } } return(pos); }
internal virtual void SerializeInternal([Nullable(1)] JsonWriter jsonWriter, object value, Type objectType) { ValidationUtils.ArgumentNotNull(jsonWriter, "jsonWriter"); Formatting?formatting = null; if (this._formatting != null) { Formatting formatting2 = jsonWriter.Formatting; Formatting?formatting3 = this._formatting; if (!(formatting2 == formatting3.GetValueOrDefault() & formatting3 != null)) { formatting = new Formatting?(jsonWriter.Formatting); jsonWriter.Formatting = this._formatting.GetValueOrDefault(); } } DateFormatHandling?dateFormatHandling = null; if (this._dateFormatHandling != null) { DateFormatHandling dateFormatHandling2 = jsonWriter.DateFormatHandling; DateFormatHandling?dateFormatHandling3 = this._dateFormatHandling; if (!(dateFormatHandling2 == dateFormatHandling3.GetValueOrDefault() & dateFormatHandling3 != null)) { dateFormatHandling = new DateFormatHandling?(jsonWriter.DateFormatHandling); jsonWriter.DateFormatHandling = this._dateFormatHandling.GetValueOrDefault(); } } DateTimeZoneHandling?dateTimeZoneHandling = null; if (this._dateTimeZoneHandling != null) { DateTimeZoneHandling dateTimeZoneHandling2 = jsonWriter.DateTimeZoneHandling; DateTimeZoneHandling?dateTimeZoneHandling3 = this._dateTimeZoneHandling; if (!(dateTimeZoneHandling2 == dateTimeZoneHandling3.GetValueOrDefault() & dateTimeZoneHandling3 != null)) { dateTimeZoneHandling = new DateTimeZoneHandling?(jsonWriter.DateTimeZoneHandling); jsonWriter.DateTimeZoneHandling = this._dateTimeZoneHandling.GetValueOrDefault(); } } FloatFormatHandling?floatFormatHandling = null; if (this._floatFormatHandling != null) { FloatFormatHandling floatFormatHandling2 = jsonWriter.FloatFormatHandling; FloatFormatHandling?floatFormatHandling3 = this._floatFormatHandling; if (!(floatFormatHandling2 == floatFormatHandling3.GetValueOrDefault() & floatFormatHandling3 != null)) { floatFormatHandling = new FloatFormatHandling?(jsonWriter.FloatFormatHandling); jsonWriter.FloatFormatHandling = this._floatFormatHandling.GetValueOrDefault(); } } StringEscapeHandling?stringEscapeHandling = null; if (this._stringEscapeHandling != null) { StringEscapeHandling stringEscapeHandling2 = jsonWriter.StringEscapeHandling; StringEscapeHandling?stringEscapeHandling3 = this._stringEscapeHandling; if (!(stringEscapeHandling2 == stringEscapeHandling3.GetValueOrDefault() & stringEscapeHandling3 != null)) { stringEscapeHandling = new StringEscapeHandling?(jsonWriter.StringEscapeHandling); jsonWriter.StringEscapeHandling = this._stringEscapeHandling.GetValueOrDefault(); } } CultureInfo cultureInfo = null; if (this._culture != null && !this._culture.Equals(jsonWriter.Culture)) { cultureInfo = jsonWriter.Culture; jsonWriter.Culture = this._culture; } string dateFormatString = null; if (this._dateFormatStringSet && jsonWriter.DateFormatString != this._dateFormatString) { dateFormatString = jsonWriter.DateFormatString; jsonWriter.DateFormatString = this._dateFormatString; } TraceJsonWriter traceJsonWriter = (this.TraceWriter != null && this.TraceWriter.LevelFilter >= TraceLevel.Verbose) ? new TraceJsonWriter(jsonWriter) : null; new JsonSerializerInternalWriter(this).Serialize(traceJsonWriter ?? jsonWriter, value, objectType); if (traceJsonWriter != null) { this.TraceWriter.Trace(TraceLevel.Verbose, traceJsonWriter.GetSerializedJsonMessage(), null); } if (formatting != null) { jsonWriter.Formatting = formatting.GetValueOrDefault(); } if (dateFormatHandling != null) { jsonWriter.DateFormatHandling = dateFormatHandling.GetValueOrDefault(); } if (dateTimeZoneHandling != null) { jsonWriter.DateTimeZoneHandling = dateTimeZoneHandling.GetValueOrDefault(); } if (floatFormatHandling != null) { jsonWriter.FloatFormatHandling = floatFormatHandling.GetValueOrDefault(); } if (stringEscapeHandling != null) { jsonWriter.StringEscapeHandling = stringEscapeHandling.GetValueOrDefault(); } if (this._dateFormatStringSet) { jsonWriter.DateFormatString = dateFormatString; } if (cultureInfo != null) { jsonWriter.Culture = cultureInfo; } }
internal static int WriteDateTimeOffset(char[] chars, int start, TimeSpan offset, DateFormatHandling format) { char[] chrArray = chars; int num = start; start = num + 1; chrArray[num] = (offset.Ticks >= 0L ? '+' : '-'); int num1 = Math.Abs(offset.Hours); DateTimeUtils.CopyIntToCharArray(chars, start, num1, 2); start += 2; if (format == DateFormatHandling.IsoDateFormat) { int num2 = start; start = num2 + 1; chars[num2] = ':'; } int num3 = Math.Abs(offset.Minutes); DateTimeUtils.CopyIntToCharArray(chars, start, num3, 2); start += 2; return(start); }
internal static void WriteDateTimeString(TextWriter writer, DateTime value, TimeSpan offset, DateTimeKind kind, DateFormatHandling format) { if (format == DateFormatHandling.MicrosoftDateFormat) { long num = JsonConvert.ConvertDateTimeToJavaScriptTicks(value, offset); writer.Write("\"\\/Date("); writer.Write(num); switch (kind) { case DateTimeKind.Unspecified: if (value != DateTime.MaxValue && value != DateTime.MinValue) { JsonConvert.WriteDateTimeOffset(writer, offset, format); break; } else { break; } case DateTimeKind.Local: JsonConvert.WriteDateTimeOffset(writer, offset, format); break; } writer.Write(")\\/\""); } else { writer.Write("\""); writer.Write(value.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFF", (IFormatProvider)CultureInfo.InvariantCulture)); switch (kind) { case DateTimeKind.Utc: writer.Write("Z"); break; case DateTimeKind.Local: JsonConvert.WriteDateTimeOffset(writer, offset, format); break; } writer.Write("\""); } }