Skip to content

Commit b2a880a

Browse files
authored
Fix Time Zone Problem when Read&Write DateTime to Json. (#133)
1 parent f65de36 commit b2a880a

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

src/Redis.OM/Modeling/DateTimeJsonConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, Jso
1414
{
1515
var val = reader.GetString();
1616
DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
17-
return dateTime.AddMilliseconds(long.Parse(val!));
17+
return TimeZoneInfo.ConvertTimeFromUtc(dateTime.AddMilliseconds(long.Parse(val!)), TimeZoneInfo.Local);
1818
}
1919

2020
/// <inheritdoc />

test/Redis.OM.Unit.Tests/Serialization/DateTimeSerializationTest.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public DateTimeSerializationTest(RedisSetup setup)
1818
public void TestDateTimeSerialization()
1919
{
2020
var time = DateTime.Now;
21-
var obj = new ObjectWithATimestamp {Name = "Foo", Time = time};
22-
var objNonNullNullTime = new ObjectWithATimestamp {Name = "bar", Time = time, NullableTime = time};
21+
var obj = new ObjectWithATimestamp { Name = "Foo", Time = time };
22+
var objNonNullNullTime = new ObjectWithATimestamp { Name = "bar", Time = time, NullableTime = time };
2323
var id = _connection.Set(obj);
2424
var id2 = _connection.Set(objNonNullNullTime);
2525
var reconstituted = _connection.Get<ObjectWithATimestamp>(id);
@@ -28,20 +28,20 @@ public void TestDateTimeSerialization()
2828
Assert.Null(reconstituted.NullableTime);
2929
Assert.Equal(time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff"), reconstitutedObj2.NullableTime.Value.ToString("yyyy-MM-ddTHH:mm:ss.fff"));
3030
}
31-
31+
3232
[Fact]
3333
public void TestJsonDateTimeSerialization()
3434
{
3535
var time = DateTime.Now;
36-
var obj = new JsonObjectWithDateTime {Name = "Foo", Time = time};
37-
var objNonNullNullTime = new JsonObjectWithDateTime {Name = "bar", Time = time, NullableTime = time};
36+
var obj = new JsonObjectWithDateTime { Name = "Foo", Time = time };
37+
var objNonNullNullTime = new JsonObjectWithDateTime { Name = "bar", Time = time, NullableTime = time };
3838
var id = _connection.Set(obj);
3939
var id2 = _connection.Set(objNonNullNullTime);
4040
var reconstituted = _connection.Get<JsonObjectWithDateTime>(id);
4141
var reconstitutedObj2 = _connection.Get<JsonObjectWithDateTime>(id2);
42-
Assert.Equal(time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), reconstituted.Time.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"));
42+
Assert.Equal(time.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), reconstituted.Time.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"));
4343
Assert.Null(reconstituted.NullableTime);
44-
Assert.Equal(time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff"), reconstitutedObj2.NullableTime.Value.ToString("yyyy-MM-ddTHH:mm:ss.fff"));
44+
Assert.Equal(time.ToString("yyyy-MM-ddTHH:mm:ss.fff"), reconstitutedObj2.NullableTime.Value.ToString("yyyy-MM-ddTHH:mm:ss.fff"));
4545
}
4646
}
4747
}

0 commit comments

Comments
 (0)