-Changed DefaultDateTimeFormat on IsoDateTimeConverter to not display zero milliseconds
This commit is contained in:
@@ -66,13 +66,13 @@ namespace Newtonsoft.Json.Tests.Converters
|
||||
string result;
|
||||
|
||||
result = JsonConvert.SerializeObject(d, converter);
|
||||
Assert.AreEqual(@"""2000-12-15T22:11:03.0550000Z""", result);
|
||||
Assert.AreEqual(@"""2000-12-15T22:11:03.055Z""", result);
|
||||
|
||||
Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTime>(result, converter));
|
||||
|
||||
d = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Local);
|
||||
result = JsonConvert.SerializeObject(d, converter);
|
||||
Assert.AreEqual(@"""2000-12-15T22:11:03.0550000" + d.GetLocalOffset() + @"""", result);
|
||||
Assert.AreEqual(@"""2000-12-15T22:11:03.055" + d.GetLocalOffset() + @"""", result);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -150,7 +150,7 @@ namespace Newtonsoft.Json.Tests.Converters
|
||||
string result;
|
||||
|
||||
result = JsonConvert.SerializeObject(d, converter);
|
||||
Assert.AreEqual(@"""2000-12-15T22:11:03.0550000+00:00""", result);
|
||||
Assert.AreEqual(@"""2000-12-15T22:11:03.055+00:00""", result);
|
||||
|
||||
Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTimeOffset>(result, converter));
|
||||
}
|
||||
@@ -164,7 +164,7 @@ namespace Newtonsoft.Json.Tests.Converters
|
||||
c.PreField = "Pre";
|
||||
c.PostField = "Post";
|
||||
string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
|
||||
Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12.0000000Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12.0000000+00:00"",""PostField"":""Post""}", json);
|
||||
Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12+00:00"",""PostField"":""Post""}", json);
|
||||
|
||||
//test the other edge case too
|
||||
c.DateTimeField = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc).ToLocalTime();
|
||||
@@ -172,7 +172,7 @@ namespace Newtonsoft.Json.Tests.Converters
|
||||
c.PreField = "Pre";
|
||||
c.PostField = "Post";
|
||||
json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
|
||||
Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-01-01T01:01:01.0000000Z"",""DateTimeOffsetField"":""2008-01-01T01:01:01.0000000+00:00"",""PostField"":""Post""}", json);
|
||||
Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-01-01T01:01:01Z"",""DateTimeOffsetField"":""2008-01-01T01:01:01+00:00"",""PostField"":""Post""}", json);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -184,7 +184,7 @@ namespace Newtonsoft.Json.Tests.Converters
|
||||
c.PreField = "Pre";
|
||||
c.PostField = "Post";
|
||||
string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
|
||||
Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12.0000000Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12.0000000+00:00"",""PostField"":""Post""}", json);
|
||||
Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12+00:00"",""PostField"":""Post""}", json);
|
||||
|
||||
//test the other edge case too
|
||||
c.DateTimeField = null;
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Runtime.Serialization.Json;
|
||||
using System.Text;
|
||||
using Newtonsoft.Json.Utilities;
|
||||
using NUnit.Framework;
|
||||
@@ -291,5 +293,42 @@ now brown cow?", '"', true);
|
||||
Assert.AreEqual(JsonConvert.NegativeInfinity, JsonConvert.ToString(double.NegativeInfinity));
|
||||
Assert.AreEqual(JsonConvert.NaN, JsonConvert.ToString(double.NaN));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DateTimeOffsetToString()
|
||||
{
|
||||
DateTimeOffset dt = new DateTimeOffset(2000, 12, 20, 0, 0, 0, TimeSpan.Zero);
|
||||
dt = DateTimeOffset.Now;
|
||||
Console.WriteLine(JsonConvert.ToString(dt));
|
||||
Console.WriteLine(JsonConvert.ToString(new DateTimeOffset(2000, 12, 20, 0, 0, 0, TimeSpan.FromHours(13))));
|
||||
Console.WriteLine(JsonConvert.ToString(DateTime.Now));
|
||||
Console.WriteLine(JsonConvert.ToString(DateTime.Now.ToUniversalTime()));
|
||||
|
||||
MemoryStream ms = new MemoryStream();
|
||||
DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(DateTime));
|
||||
s.WriteObject(ms, DateTime.Now);
|
||||
|
||||
string json = Encoding.UTF8.GetString(ms.ToArray());
|
||||
Console.WriteLine(AreEqual(DateTime.Now));
|
||||
Console.WriteLine(AreEqual(DateTime.UtcNow));
|
||||
Console.WriteLine(AreEqual(DateTimeOffset.Now));
|
||||
Console.WriteLine(AreEqual(DateTimeOffset.UtcNow));
|
||||
}
|
||||
|
||||
private bool AreEqual(object value)
|
||||
{
|
||||
MemoryStream ms = new MemoryStream();
|
||||
DataContractJsonSerializer s = new DataContractJsonSerializer(value.GetType());
|
||||
s.WriteObject(ms, value);
|
||||
|
||||
string dataContractJson = Encoding.UTF8.GetString(ms.ToArray());
|
||||
|
||||
string jsonNetJson = JsonConvert.SerializeObject(value);
|
||||
|
||||
bool result = (dataContractJson == jsonNetJson);
|
||||
Console.WriteLine(StringUtils.FormatWith("DataContract: {0}, Json.NET: {1}, Equal: {2}", CultureInfo.InvariantCulture, dataContractJson, jsonNetJson, result));
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -484,7 +484,7 @@ keyword such as type of business.""
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DateTime()
|
||||
public void DateTimeTest()
|
||||
{
|
||||
List<DateTime> testDates = new List<DateTime> {
|
||||
new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Local),
|
||||
@@ -848,7 +848,7 @@ keyword such as type of business.""
|
||||
MemberConverterClass m1 = new MemberConverterClass { DefaultConverter = testDate, MemberConverter = testDate };
|
||||
|
||||
string json = JsonConvert.SerializeObject(m1);
|
||||
Assert.AreEqual(@"{""DefaultConverter"":""\/Date(0)\/"",""MemberConverter"":""1970-01-01T00:00:00.0000000Z""}", json);
|
||||
Assert.AreEqual(@"{""DefaultConverter"":""\/Date(0)\/"",""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
|
||||
|
||||
MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json);
|
||||
|
||||
@@ -863,7 +863,7 @@ keyword such as type of business.""
|
||||
MemberConverterClass m1 = new MemberConverterClass { DefaultConverter = testDate, MemberConverter = testDate };
|
||||
|
||||
string json = JsonConvert.SerializeObject(m1, new JavaScriptDateTimeConverter());
|
||||
Assert.AreEqual(@"{""DefaultConverter"":new Date(0),""MemberConverter"":""1970-01-01T00:00:00.0000000Z""}", json);
|
||||
Assert.AreEqual(@"{""DefaultConverter"":new Date(0),""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
|
||||
|
||||
MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json, new JavaScriptDateTimeConverter());
|
||||
|
||||
@@ -1435,5 +1435,21 @@ keyword such as type of business.""
|
||||
string newJson = JsonConvert.SerializeObject(ii);
|
||||
Assert.AreEqual(@"{""SubProp"":""my subprop"",""SuperProp"":""overrided superprop""}", newJson);
|
||||
}
|
||||
|
||||
public class BrowserDateTimeTestClass
|
||||
{
|
||||
public DateTime utc { get; set; }
|
||||
public DateTime local { get; set; }
|
||||
}
|
||||
|
||||
public void BrowserNativeJsonDeserialization()
|
||||
{
|
||||
DateTime dt = DateTime.Now;
|
||||
string browserJson = @"{""utc"":""2009-04-11T05:58:39Z"",""local"":""2009-04-11T05:58:39Z""}";
|
||||
|
||||
BrowserDateTimeTestClass c = JsonConvert.DeserializeObject<BrowserDateTimeTestClass>(browserJson);
|
||||
|
||||
Console.WriteLine(c.utc);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -509,12 +509,12 @@ namespace Newtonsoft.Json.Tests.Linq
|
||||
string json = a.ToString(Formatting.Indented, new IsoDateTimeConverter());
|
||||
|
||||
Assert.AreEqual(@"[
|
||||
""2009-02-15T00:00:00.0000000Z""
|
||||
""2009-02-15T00:00:00Z""
|
||||
]", json);
|
||||
|
||||
json = JsonConvert.SerializeObject(a, new IsoDateTimeConverter());
|
||||
|
||||
Assert.AreEqual(@"[""2009-02-15T00:00:00.0000000Z""]", json);
|
||||
Assert.AreEqual(@"[""2009-02-15T00:00:00Z""]", json);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -527,7 +527,7 @@ namespace Newtonsoft.Json.Tests.Linq
|
||||
|
||||
string json = a.ToString(Formatting.None, new IsoDateTimeConverter());
|
||||
|
||||
Assert.AreEqual(@"[""2009-02-15T00:00:00.0000000Z""]", json);
|
||||
Assert.AreEqual(@"[""2009-02-15T00:00:00Z""]", json);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -60,8 +60,8 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Converters\BinaryConverterTests.cs" />
|
||||
<Compile Include="Converters\StringEnumConverterTests.cs" />
|
||||
<Compile Include="JTokenReaderTest.cs" />
|
||||
<Compile Include="JTokenWriterTest.cs" />
|
||||
<Compile Include="Linq\JTokenReaderTest.cs" />
|
||||
<Compile Include="Linq\JTokenWriterTest.cs" />
|
||||
<Compile Include="Serialization\CamelCaseMappingResolverTests.cs" />
|
||||
<Compile Include="JsonValidatingReaderTests.cs" />
|
||||
<Compile Include="Schema\ExtensionsTests.cs" />
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Newtonsoft.Json.Converters
|
||||
/// </summary>
|
||||
public class IsoDateTimeConverter : JsonConverter
|
||||
{
|
||||
private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK";
|
||||
private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";
|
||||
|
||||
private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
|
||||
private string _dateTimeFormat;
|
||||
|
||||
Reference in New Issue
Block a user