diff --git a/src/Utf8Json/Formatters/DateTimeFormatter.cs b/src/Utf8Json/Formatters/DateTimeFormatter.cs index 3ddb2724..50b2392d 100644 --- a/src/Utf8Json/Formatters/DateTimeFormatter.cs +++ b/src/Utf8Json/Formatters/DateTimeFormatter.cs @@ -901,8 +901,8 @@ public TimeSpan Deserialize(ref JsonReader reader, IJsonFormatterResolver format { poolArray[day++] = array[i]; } + poolArray[day] = array[i++]; // skip '.' and fix #105 day = new JsonReader(poolArray).ReadInt32(); - i++; // skip '.' } finally { diff --git a/tests/Utf8Json.Tests/DateAndTime.cs b/tests/Utf8Json.Tests/DateAndTime.cs index 273e46a7..921a7325 100644 --- a/tests/Utf8Json.Tests/DateAndTime.cs +++ b/tests/Utf8Json.Tests/DateAndTime.cs @@ -142,6 +142,13 @@ public void Issue20() deserialized.StatusDate.Is(new DateTimeOffset(1970, 1, 1, 9, 15, 10, TimeSpan.Zero)); } + [Fact] + public void Issue105() + { + JsonSerializer.Deserialize("\"88.12:00:00\"").Is(TimeSpan.FromDays(88.5)); + JsonSerializer.Deserialize("\"8.12:00:00\"").Is(TimeSpan.FromDays(8.5)); + } + public class Test { public bool Flag { get; set; }