Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit a5d4384

Browse files
Use the correct time zone offsets
1 parent 9d7e2d3 commit a5d4384

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

src/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public static void DCJS_ByteAsRoot()
8989
[Fact]
9090
public static void DCJS_DateTimeAsRoot()
9191
{
92-
var offsetMinutes = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
92+
var offsetMinutes = (int)TimeZoneInfo.Local.GetUtcOffset(new DateTime(2013, 1, 2)).TotalMinutes;
9393
var timeZoneString = string.Format("{0:+;-}{1}", offsetMinutes, new TimeSpan(0, offsetMinutes, 0).ToString(@"hhmm"));
9494
Assert.StrictEqual(SerializeAndDeserialize<DateTime>(new DateTime(2013, 1, 2).AddMinutes(offsetMinutes), string.Format("\"\\/Date(1357084800000{0})\\/\"", timeZoneString)), new DateTime(2013, 1, 2).AddMinutes(offsetMinutes));
9595
Assert.StrictEqual(SerializeAndDeserialize<DateTime>(new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Local).AddMinutes(offsetMinutes), string.Format("\"\\/Date(1357095845006{0})\\/\"", timeZoneString)), new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Local).AddMinutes(offsetMinutes));
@@ -997,7 +997,7 @@ public static void DCJS_JaggedArrayAsRoot()
997997
Assert.Equal(jaggedStringArray[1], actualJaggedStringArray[1]);
998998
Assert.Equal(jaggedStringArray[2], actualJaggedStringArray[2]);
999999

1000-
var offsetMinutes = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
1000+
var offsetMinutes = (int)TimeZoneInfo.Local.GetUtcOffset(new DateTime(2013, 1, 2)).TotalMinutes;
10011001
var timeZoneString = string.Format("{0:+;-}{1}", offsetMinutes, new TimeSpan(0, offsetMinutes, 0).ToString(@"hhmm"));
10021002
object[] objectArray = new object[] { 1, 1.0F, 1.0, "string", Guid.Parse("2054fd3e-e118-476a-9962-1a882be51860"), new DateTime(2013, 1, 2).AddMinutes(offsetMinutes) };
10031003
var actualObjectArray = SerializeAndDeserialize<object[]>(objectArray, string.Format("[1,1,1,\"string\",\"2054fd3e-e118-476a-9962-1a882be51860\",\"\\/Date(1357084800000{0})\\/\"]", timeZoneString));

src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static class DataContractSerializerTests
2020
[Fact]
2121
public static void DCS_DateTimeOffsetAsRoot()
2222
{
23-
var offsetMinutes = TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
23+
var offsetMinutes = TimeZoneInfo.Local.GetUtcOffset(new DateTime(2013, 1, 2)).TotalMinutes;
2424
var objs = new DateTimeOffset[]
2525
{
2626
// Adding offsetMinutes so the DateTime component in serialized strings are time-zone independent
@@ -87,7 +87,7 @@ public static void DCS_ByteAsRoot()
8787
[Fact]
8888
public static void DCS_DateTimeAsRoot()
8989
{
90-
var offsetMinutes = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
90+
var offsetMinutes = (int)TimeZoneInfo.Local.GetUtcOffset(new DateTime(2013, 1, 2)).TotalMinutes;
9191
Assert.StrictEqual(SerializeAndDeserialize<DateTime>(new DateTime(2013, 1, 2), "<dateTime xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">2013-01-02T00:00:00</dateTime>"), new DateTime(2013, 1, 2));
9292
Assert.StrictEqual(SerializeAndDeserialize<DateTime>(new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Local), string.Format("<dateTime xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">2013-01-02T03:04:05.006{0:+;-}{1}</dateTime>", offsetMinutes, new TimeSpan(0, offsetMinutes, 0).ToString(@"hh\:mm"))), new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Local));
9393
Assert.StrictEqual(SerializeAndDeserialize<DateTime>(new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Unspecified), "<dateTime xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">2013-01-02T03:04:05.006</dateTime>"), new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Unspecified));
@@ -1365,7 +1365,7 @@ public static void DCS_TypeWithDatetimeOffsetTypeProperty()
13651365
Assert.StrictEqual(value.ModifiedTime, actual.ModifiedTime);
13661366
Assert.StrictEqual(value.ModifiedTime.Offset, actual.ModifiedTime.Offset);
13671367

1368-
var offsetMinutes = TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
1368+
var offsetMinutes = TimeZoneInfo.Local.GetUtcOffset(new DateTime(2013, 1, 2)).TotalMinutes;
13691369
// Adding offsetMinutes to ModifiedTime property so the DateTime component in serialized strings are time-zone independent
13701370
value = new TypeWithDateTimeOffsetTypeProperty() { ModifiedTime = new DateTimeOffset(new DateTime(2013, 1, 2, 3, 4, 5, 6).AddMinutes(offsetMinutes)) };
13711371
actual = SerializeAndDeserialize(value, string.Format("<TypeWithDateTimeOffsetTypeProperty xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><ModifiedTime xmlns:a=\"http://schemas.datacontract.org/2004/07/System\"><a:DateTime>2013-01-02T03:04:05.006Z</a:DateTime><a:OffsetMinutes>{0}</a:OffsetMinutes></ModifiedTime></TypeWithDateTimeOffsetTypeProperty>", offsetMinutes));

src/System.Xml.XmlSerializer/tests/XmlSerializerTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public static void Xml_ByteAsRoot()
5454
[Fact]
5555
public static void Xml_DateTimeAsRoot()
5656
{
57-
var offsetMinutes = (int)TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
57+
var offsetMinutes = (int)TimeZoneInfo.Local.GetUtcOffset(new DateTime(2013, 1, 2)).TotalMinutes;
5858
var timeZoneString = string.Format("{0:+;-}{1}", offsetMinutes, new TimeSpan(0, offsetMinutes, 0).ToString(@"hh\:mm"));
5959
Assert.StrictEqual(SerializeAndDeserialize<DateTime>(new DateTime(2013, 1, 2), "<?xml version=\"1.0\"?>" + Environment.NewLine + "<dateTime>2013-01-02T00:00:00</dateTime>"), new DateTime(2013, 1, 2));
6060
Assert.StrictEqual(SerializeAndDeserialize<DateTime>(new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Local), string.Format("<?xml version=\"1.0\"?>" + Environment.NewLine + "<dateTime>2013-01-02T03:04:05.006{0}</dateTime>", timeZoneString)), new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Local));

0 commit comments

Comments
 (0)