diff --git a/Src/Newtonsoft.Json.Tests/Serialization/TimeOnlyTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/TimeOnlyTests.cs index ce9c3d5f7..620150627 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/TimeOnlyTests.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/TimeOnlyTests.cs @@ -144,6 +144,22 @@ public void Deserialize() Assert.AreEqual(new TimeOnly(23, 59, 59), t); } + [Test] + public void Deserialize_Milliseconds() + { + TimeOnly t = JsonConvert.DeserializeObject(@"""23:59:59.999"""); + + Assert.AreEqual(new TimeOnly(23, 59, 59, 999), t); + } + + [Test] + public void Deserialize_WithoutSeconds() + { + TimeOnly t = JsonConvert.DeserializeObject(@"""23:59"""); + + Assert.AreEqual(new TimeOnly(23, 59, 00), t); + } + [Test] public void DeserializeDefault() { diff --git a/Src/Newtonsoft.Json/Utilities/ConvertUtils.cs b/Src/Newtonsoft.Json/Utilities/ConvertUtils.cs index b6837eca9..d38c4b8b9 100644 --- a/Src/Newtonsoft.Json/Utilities/ConvertUtils.cs +++ b/Src/Newtonsoft.Json/Utilities/ConvertUtils.cs @@ -511,7 +511,7 @@ private static ConvertResult TryConvertInternal(object? initialValue, CultureInf } if (targetType == typeof(TimeOnly)) { - value = TimeOnly.ParseExact(s, "HH':'mm':'ss.FFFFFFF", CultureInfo.InvariantCulture); + value = TimeOnly.Parse(s, CultureInfo.InvariantCulture); return ConvertResult.Success; } #endif