Skip to content

Commit 0388878

Browse files
committed
Handle hour part extraction in different timezones
1 parent 776de68 commit 0388878

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

Orm/Xtensive.Orm.Tests.Sql/PostgreSql/InfinityAliasTest.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -469,10 +469,14 @@ private void TestMinDateTimeOffsetSelectDatePart(bool isOn)
469469
DateTimeOffset.MinValue.Day,
470470
isOn);
471471

472-
// timezone for DateTimeOffset.MinValue value in postgre is set to 04:02:33, at least when instance is in UTC+5 timezone
472+
var serverSideHours = (localTimezone > TimeSpan.Zero)
473+
? localTimezone.Hours // positive zone
474+
: (localTimezone < TimeSpan.Zero)
475+
? 23 + localTimezone.Hours // negative zone
476+
: localTimezone.Hours; // UTC
473477
TestDateTimeOffsetPartExtraction(DateTimeOffsetMinValueTable, SqlDateTimeOffsetPart.Hour,
474-
localTimezone.Hours,
475-
localTimezone.Hours,
478+
serverSideHours,
479+
serverSideHours,
476480
isOn);
477481
TestDateTimeOffsetPartExtraction(DateTimeOffsetMinValueTable, SqlDateTimeOffsetPart.Minute,
478482
DateTimeOffset.MinValue.Minute,

Orm/Xtensive.Orm.Tests/Linq/DateTimeAndDateTimeOffset/DateTimeOffset/PartsExtractionTest.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,10 @@ public void ExtractHourMinValueTest()
176176

177177
ExecuteInsideSession((s) => {
178178
var serverSideHours = (localTimezone > TimeSpan.Zero)
179-
? localTimezone.Hours - 1 // positive zone
180-
: (localTimezone < TimeSpan.Zero)
181-
? 23 + localTimezone.Hours // negative zone
182-
: 23; // UTC
179+
? localTimezone.Hours // positive zone
180+
: (localTimezone < TimeSpan.Zero)
181+
? 23 + localTimezone.Hours // negative zone
182+
: localTimezone.Hours; // UTC
183183
RunTest<MinMaxDateTimeOffsetEntity>(s, c => c.MinValue.Hour == serverSideHours);
184184
RunWrongTest<MinMaxDateTimeOffsetEntity>(s, c => c.MinValue.Hour == DateTimeOffset.MinValue.AddHours(1).Hour);
185185
});
@@ -192,10 +192,10 @@ public void ExtractHourMaxValueTest()
192192

193193
ExecuteInsideSession((s) => {
194194
var serverSideHours = (localTimezone > TimeSpan.Zero)
195-
? localTimezone.Hours - 1 // positive zone
196-
: (localTimezone < TimeSpan.Zero)
197-
? 23 + localTimezone.Hours // negative zone
198-
: 23; // UTC
195+
? localTimezone.Hours - 1 // positive zone
196+
: (localTimezone < TimeSpan.Zero)
197+
? 23 + localTimezone.Hours // negative zone
198+
: 23; // UTC
199199
RunTest<MinMaxDateTimeOffsetEntity>(s, c => c.MaxValue.Hour == serverSideHours);
200200
RunWrongTest<MinMaxDateTimeOffsetEntity>(s, c => c.MaxValue.Hour == DateTimeOffset.MaxValue.AddHours(-1).Hour);
201201
});

0 commit comments

Comments
 (0)