Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 26f26cb

Browse files
committed
tidy DateTimeSerializer
1 parent 773d90a commit 26f26cb

File tree

1 file changed

+29
-43
lines changed

1 file changed

+29
-43
lines changed

src/ServiceStack.Text/Common/DateTimeSerializer.cs

Lines changed: 29 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ public static class DateTimeSerializer
3030
public const string XsdDateTimeFormat3F = "yyyy-MM-ddTHH:mm:ss.fffZ"; //25
3131
public const string XsdDateTimeFormatSeconds = "yyyy-MM-ddTHH:mm:ssZ"; //21
3232
public const string DateTimeFormatSecondsUtcOffset = "yyyy-MM-ddTHH:mm:sszzz"; //22
33-
public const string DateTimeFormatSecondsNoOffset = "yyyy-MM-ddTHH:mm:ss";
33+
public const string DateTimeFormatSecondsNoOffset = "yyyy-MM-ddTHH:mm:ss";
3434
public const string DateTimeFormatTicksUtcOffset = "yyyy-MM-ddTHH:mm:ss.fffffffzzz"; //30
35-
public const string DateTimeFormatTicksNoUtcOffset = "yyyy-MM-ddTHH:mm:ss.fffffff";
35+
public const string DateTimeFormatTicksNoUtcOffset = "yyyy-MM-ddTHH:mm:ss.fffffff";
3636

3737
public const string EscapedWcfJsonPrefix = "\\/Date(";
3838
public const string EscapedWcfJsonSuffix = ")\\/";
@@ -56,14 +56,11 @@ public static class DateTimeSerializer
5656
public static DateTime Prepare(this DateTime dateTime, bool parsedAsUtc = false)
5757
{
5858
if (JsConfig.SkipDateTimeConversion)
59-
{
6059
return dateTime;
61-
}
60+
6261
if (JsConfig.AlwaysUseUtc)
63-
{
6462
return dateTime.Kind != DateTimeKind.Utc ? dateTime.ToStableUniversalTime() : dateTime;
65-
}
66-
63+
6764
return parsedAsUtc ? dateTime.ToLocalTime() : dateTime;
6865
}
6966

@@ -102,14 +99,14 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
10299

103100
if (dateTimeStr.Length == DefaultDateTimeFormatWithFraction.Length)
104101
{
105-
var unspecifiedDate = JsConfig.AssumeUtc
102+
var unspecifiedDate = JsConfig.AssumeUtc
106103
? DateTime.Parse(dateTimeStr, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)
107104
: DateTime.Parse(dateTimeStr, CultureInfo.InvariantCulture);
108105

109106
return unspecifiedDate.Prepare();
110107
}
111-
DateTimeKind kind = DateTimeKind.Unspecified;
112108

109+
var kind = DateTimeKind.Unspecified;
113110
switch (JsConfig.DateHandler)
114111
{
115112
case DateHandler.UnixTime:
@@ -124,9 +121,7 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
124121
break;
125122
case DateHandler.ISO8601:
126123
if (JsConfig.SkipDateTimeConversion)
127-
{
128-
dateTimeStr = RemoveUtcOffsets(dateTimeStr, out kind);
129-
}
124+
dateTimeStr = RemoveUtcOffsets(dateTimeStr, out kind);
130125
break;
131126
}
132127

@@ -164,21 +159,18 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
164159

165160
try
166161
{
167-
DateTime dateTime;
168162
if (JsConfig.SkipDateTimeConversion)
169163
{
170-
dateTime = DateTime.Parse(dateTimeStr, null,
171-
kind == DateTimeKind.Unspecified ?
172-
DateTimeStyles.None :
173-
kind == DateTimeKind.Local ?
174-
DateTimeStyles.AssumeLocal :
175-
DateTimeStyles.AssumeUniversal);
176-
}
177-
else
178-
{
179-
var assumeKind = JsConfig.AssumeUtc ? DateTimeStyles.AssumeUniversal : DateTimeStyles.AssumeLocal;
180-
dateTime = DateTime.Parse(dateTimeStr, CultureInfo.InvariantCulture, assumeKind);
164+
return DateTime.Parse(dateTimeStr, null,
165+
kind == DateTimeKind.Unspecified
166+
? DateTimeStyles.None
167+
: kind == DateTimeKind.Local
168+
? DateTimeStyles.AssumeLocal
169+
: DateTimeStyles.AssumeUniversal);
181170
}
171+
172+
var assumeKind = JsConfig.AssumeUtc ? DateTimeStyles.AssumeUniversal : DateTimeStyles.AssumeLocal;
173+
var dateTime = DateTime.Parse(dateTimeStr, CultureInfo.InvariantCulture, assumeKind);
182174
return dateTime.Prepare();
183175
}
184176
catch (FormatException)
@@ -200,14 +192,14 @@ public static DateTime ParseShortestXsdDateTime(string dateTimeStr)
200192
}
201193

202194
private static string RemoveUtcOffsets(string dateTimeStr, out DateTimeKind kind)
203-
{
195+
{
204196
var startOfTz = UtcOffsetInfoRegex.Match(dateTimeStr);
205-
if (startOfTz.Index > 0)
197+
if (startOfTz.Index > 0)
206198
{
207-
kind = DateTimeKind.Local;
199+
kind = DateTimeKind.Local;
208200
return dateTimeStr.Substring(0, startOfTz.Index);
209201
}
210-
kind = dateTimeStr.Contains("Z") ? DateTimeKind.Utc : DateTimeKind.Unspecified;
202+
kind = dateTimeStr.Contains("Z") ? DateTimeKind.Utc : DateTimeKind.Unspecified;
211203
return dateTimeStr;
212204
}
213205

@@ -230,7 +222,7 @@ private static string RepairXsdTimeSeparator(string dateTimeStr)
230222

231223
public static DateTime? ParseManual(string dateTimeStr)
232224
{
233-
var dateKind = JsConfig.AssumeUtc || JsConfig.AlwaysUseUtc
225+
var dateKind = JsConfig.AssumeUtc || JsConfig.AlwaysUseUtc
234226
? DateTimeKind.Utc
235227
: DateTimeKind.Local;
236228

@@ -251,7 +243,7 @@ private static string RepairXsdTimeSeparator(string dateTimeStr)
251243
if (dateTimeStr.EndsWith(XsdUtcSuffix))
252244
{
253245
dateTimeStr = dateTimeStr.Substring(0, dateTimeStr.Length - 1);
254-
dateKind = JsConfig.SkipDateTimeConversion ? DateTimeKind.Utc : dateKind;
246+
dateKind = JsConfig.SkipDateTimeConversion ? DateTimeKind.Utc : dateKind;
255247
}
256248

257249
var parts = dateTimeStr.Split('T');
@@ -371,7 +363,7 @@ public static DateTimeOffset ParseDateTimeOffset(string dateTimeOffsetStr)
371363
if (Env.IsMono)
372364
{
373365
// Without that Mono uses a Local timezone))
374-
dateTimeOffsetStr = dateTimeOffsetStr.Substring(0, dateTimeOffsetStr.Length - 1) + "+00:00";
366+
dateTimeOffsetStr = dateTimeOffsetStr.Substring(0, dateTimeOffsetStr.Length - 1) + "+00:00";
375367
}
376368
}
377369

@@ -415,7 +407,7 @@ public static TimeSpan ParseTimeSpan(string dateTimeStr)
415407
{
416408
return dateTimeStr.StartsWith("P", StringComparison.Ordinal) || dateTimeStr.StartsWith("-P", StringComparison.Ordinal)
417409
? ParseXsdTimeSpan(dateTimeStr)
418-
: dateTimeStr.Contains(":")
410+
: dateTimeStr.Contains(":")
419411
? TimeSpan.Parse(dateTimeStr)
420412
: ParseNSTimeInterval(dateTimeStr);
421413
}
@@ -450,11 +442,12 @@ public static string ToShortestXsdDateTimeString(DateTime dateTime)
450442
var timeOfDay = dateTime.TimeOfDay;
451443

452444
var isStartOfDay = timeOfDay.Ticks == 0;
453-
if (isStartOfDay && !(JsConfig.SkipDateTimeConversion))
445+
if (isStartOfDay && !JsConfig.SkipDateTimeConversion)
454446
return dateTime.ToString(ShortDateTimeFormat);
455447

456-
var hasFractionalSecs = (timeOfDay.Milliseconds != 0)
457-
|| ((timeOfDay.Ticks%TimeSpan.TicksPerMillisecond) != 0);
448+
var hasFractionalSecs = (timeOfDay.Milliseconds != 0)
449+
|| (timeOfDay.Ticks % TimeSpan.TicksPerMillisecond != 0);
450+
458451
if (JsConfig.SkipDateTimeConversion)
459452
{
460453
if (!hasFractionalSecs)
@@ -470,6 +463,7 @@ public static string ToShortestXsdDateTimeString(DateTime dateTime)
470463
? dateTime.ToString(DateTimeFormatTicksNoUtcOffset)
471464
: PclExport.Instance.ToXsdDateTimeString(dateTime);
472465
}
466+
473467
if (!hasFractionalSecs)
474468
return dateTime.Kind != DateTimeKind.Utc
475469
? dateTime.ToString(DateTimeFormatSecondsUtcOffset)
@@ -594,15 +588,7 @@ public static void WriteWcfJsonDate(TextWriter writer, DateTime dateTime)
594588

595589
if (JsConfig.DateHandler == DateHandler.ISO8601)
596590
{
597-
if (!JsConfig.SkipDateTimeConversion)
598-
{
599591
writer.Write(dateTime.ToString("o", CultureInfo.InvariantCulture));
600-
}
601-
else
602-
{
603-
var dt = dateTime.ToString("o", CultureInfo.InvariantCulture);
604-
writer.Write(dt);
605-
}
606592
return;
607593
}
608594

0 commit comments

Comments
 (0)