@@ -56,10 +56,11 @@ public static class DateTimeSerializer
56
56
/// <returns></returns>
57
57
public static DateTime Prepare ( this DateTime dateTime , bool parsedAsUtc = false )
58
58
{
59
- if ( JsConfig . SkipDateTimeConversion )
59
+ var config = JsConfig . GetConfig ( ) ;
60
+ if ( config . SkipDateTimeConversion )
60
61
return dateTime ;
61
62
62
- if ( JsConfig . AlwaysUseUtc )
63
+ if ( config . AlwaysUseUtc )
63
64
return dateTime . Kind != DateTimeKind . Utc ? dateTime . ToStableUniversalTime ( ) : dateTime ;
64
65
65
66
return parsedAsUtc ? dateTime . ToLocalTime ( ) : dateTime ;
@@ -88,27 +89,28 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
88
89
if ( dateTimeStr . StartsWith ( EscapedWcfJsonPrefix , StringComparison . Ordinal ) || dateTimeStr . StartsWith ( WcfJsonPrefix , StringComparison . Ordinal ) )
89
90
return ParseWcfJsonDate ( dateTimeStr ) . Prepare ( ) ;
90
91
92
+ var config = JsConfig . GetConfig ( ) ;
91
93
if ( dateTimeStr . Length == DefaultDateTimeFormat . Length )
92
94
{
93
95
var unspecifiedDate = DateTime . Parse ( dateTimeStr , CultureInfo . InvariantCulture ) ;
94
96
95
- if ( JsConfig . AssumeUtc )
97
+ if ( config . AssumeUtc )
96
98
unspecifiedDate = DateTime . SpecifyKind ( unspecifiedDate , DateTimeKind . Utc ) ;
97
99
98
100
return unspecifiedDate . Prepare ( ) ;
99
101
}
100
102
101
103
if ( dateTimeStr . Length == DefaultDateTimeFormatWithFraction . Length )
102
104
{
103
- var unspecifiedDate = JsConfig . AssumeUtc
105
+ var unspecifiedDate = config . AssumeUtc
104
106
? DateTime . Parse ( dateTimeStr , CultureInfo . InvariantCulture , DateTimeStyles . AssumeUniversal )
105
107
: DateTime . Parse ( dateTimeStr , CultureInfo . InvariantCulture ) ;
106
108
107
109
return unspecifiedDate . Prepare ( ) ;
108
110
}
109
111
110
112
var kind = DateTimeKind . Unspecified ;
111
- switch ( JsConfig . DateHandler )
113
+ switch ( config . DateHandler )
112
114
{
113
115
case DateHandler . UnixTime :
114
116
if ( int . TryParse ( dateTimeStr , out var unixTime ) )
@@ -121,7 +123,7 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
121
123
case DateHandler . ISO8601 :
122
124
case DateHandler . ISO8601DateOnly :
123
125
case DateHandler . ISO8601DateTime :
124
- if ( JsConfig . SkipDateTimeConversion )
126
+ if ( config . SkipDateTimeConversion )
125
127
dateTimeStr = RemoveUtcOffsets ( dateTimeStr , out kind ) ;
126
128
break ;
127
129
}
@@ -160,7 +162,7 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
160
162
161
163
try
162
164
{
163
- if ( JsConfig . SkipDateTimeConversion )
165
+ if ( config . SkipDateTimeConversion )
164
166
{
165
167
return DateTime . Parse ( dateTimeStr , null ,
166
168
kind == DateTimeKind . Unspecified
@@ -170,7 +172,7 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
170
172
: DateTimeStyles . AssumeUniversal ) ;
171
173
}
172
174
173
- var assumeKind = JsConfig . AssumeUtc ? DateTimeStyles . AssumeUniversal : DateTimeStyles . AssumeLocal ;
175
+ var assumeKind = config . AssumeUtc ? DateTimeStyles . AssumeUniversal : DateTimeStyles . AssumeLocal ;
174
176
var dateTime = DateTime . Parse ( dateTimeStr , CultureInfo . InvariantCulture , assumeKind ) ;
175
177
return dateTime . Prepare ( ) ;
176
178
}
@@ -596,8 +598,10 @@ private static DateTime UseConfigSpecifiedSetting(this DateTime dateTime)
596
598
597
599
public static void WriteWcfJsonDate ( TextWriter writer , DateTime dateTime )
598
600
{
601
+ var config = JsConfig . GetConfig ( ) ;
602
+
599
603
dateTime = dateTime . UseConfigSpecifiedSetting ( ) ;
600
- switch ( JsConfig . DateHandler )
604
+ switch ( config . DateHandler )
601
605
{
602
606
case DateHandler . ISO8601 :
603
607
writer . Write ( dateTime . ToString ( "o" , CultureInfo . InvariantCulture ) ) ;
@@ -617,16 +621,16 @@ public static void WriteWcfJsonDate(TextWriter writer, DateTime dateTime)
617
621
string offset = null ;
618
622
if ( dateTime . Kind != DateTimeKind . Utc )
619
623
{
620
- if ( JsConfig . DateHandler == DateHandler . TimestampOffset && dateTime . Kind == DateTimeKind . Unspecified )
624
+ if ( config . DateHandler == DateHandler . TimestampOffset && dateTime . Kind == DateTimeKind . Unspecified )
621
625
offset = UnspecifiedOffset ;
622
626
else
623
627
offset = LocalTimeZone . GetUtcOffset ( dateTime ) . ToTimeOffsetString ( ) ;
624
628
}
625
629
else
626
630
{
627
631
// Normally the JsonDateHandler.TimestampOffset doesn't append an offset for Utc dates, but if
628
- // the JsConfig .AppendUtcOffset is set then we will
629
- if ( JsConfig . DateHandler == DateHandler . TimestampOffset && JsConfig . AppendUtcOffset . HasValue && JsConfig . AppendUtcOffset . Value )
632
+ // the config .AppendUtcOffset is set then we will
633
+ if ( config . DateHandler == DateHandler . TimestampOffset && config . AppendUtcOffset )
630
634
offset = UtcOffset ;
631
635
}
632
636
0 commit comments