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();
    }
Example #3
0
        // 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);
        }
Example #7
0
        /// <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);
        }
Example #8
0
    // 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));
     }
 }
Example #11
0
        /// <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);
        }
Example #13
0
        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);
        }
Example #14
0
        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);
        }
Example #15
0
        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('"'));
        }
Example #16
0
 // 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));
 }
Example #17
0
 // 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;
 }
Example #18
0
        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));
            }
        }
Example #19
0
        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);
        }
Example #21
0
        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;
        }
Example #22
0
        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);
        }
Example #23
0
 // 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));
 }
Example #24
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));
 }
Example #26
0
 internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format, char quoteChar)
 {
     WriteDateTimeString(writer, value, value.GetUtcOffset(), value.Kind, format, quoteChar);
 }
Example #27
0
 /// <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, '"'));
 }
Example #28
0
 internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format)
 {
     JsonConvert.WriteDateTimeString(writer, value, DateTimeUtils.GetUtcOffset(value), value.Kind, format);
 }
Example #29
0
 // 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));
 }
Example #30
0
        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);
        }
Example #31
0
 // 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;
 }
Example #32
0
        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);
        }
Example #33
0
    // 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);
    }
Example #34
0
    /// <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();
      }
    }
Example #35
0
 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));
     }
 }
Example #36
0
 /// <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();
   }
 }
Example #37
0
        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;
        }
Example #38
0
 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));
     }
 }
Example #39
0
        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);
        }
Example #40
0
        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;
            }
        }
Example #41
0
        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);
        }
Example #42
0
        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("\"");
            }
        }