From 395b2e7f6a44ca3a5d01ce35a6509c3fbfa1a8a1 Mon Sep 17 00:00:00 2001 From: Jos Date: Sun, 23 Jun 2024 11:52:42 +0200 Subject: [PATCH 1/2] Add Jetbrains Rider .idea folder to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index dfcfd56..f59de61 100644 --- a/.gitignore +++ b/.gitignore @@ -348,3 +348,6 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ + +# Jetbrains rider idea files +.idea/ \ No newline at end of file From 74e2fc71b573a2ededfeb1b98873eadad77ad576 Mon Sep 17 00:00:00 2001 From: Jos Date: Sun, 23 Jun 2024 16:58:50 +0200 Subject: [PATCH 2/2] Use NodaTime to determine DateTimeOffset --- .DS_Store | Bin 0 -> 6148 bytes DSMRParser/DSMRParser.csproj | 1 + DSMRParser/Models/Telegram.cs | 10 ++++++++-- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..af0c6c24c3be8ebeb30916697b8b853d2fec41a3 GIT binary patch literal 6148 zcmeHKyGjH>5Ukb<4llXTaDKr*7>+d*#QgyU#Y9dx@#2mAERFnczKni>*;NOQvckG2zVthInVgw*A zm=5DQW(i{R1hE%RiOkR}sl=pOjTn}6=3CYE!YMK7uo^zBo@_OtSUjEgw!2`1J0?au h=EmFcWfWyy^EJall runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/DSMRParser/Models/Telegram.cs b/DSMRParser/Models/Telegram.cs index cfd3aad..29136c6 100644 --- a/DSMRParser/Models/Telegram.cs +++ b/DSMRParser/Models/Telegram.cs @@ -6,6 +6,8 @@ using System.Globalization; using System.Linq; using System.Text; +using NodaTime; +using NodaTime.Text; namespace DSMRParser.Models; @@ -26,7 +28,7 @@ public class Telegram(string? identification, IEnumerable<(OBISId obisid, IEnume { /// The culture used for parsing values (affecting parsing of values like "1.234,56" vs "1,234.56". private static readonly CultureInfo _culture = CultureInfo.InvariantCulture; - private static readonly TimeZoneInfo _dutchtimezone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); + private static readonly DateTimeZone _dutchtimezone = DateTimeZoneProviders.Tzdb["Europe/Amsterdam"]; /// An empty dictionary of OBIS values. protected static readonly IReadOnlyDictionary> EMPTY = new ReadOnlyDictionary>(Array.Empty().ToDictionary(i => i.Id, i => Enumerable.Empty())); @@ -197,9 +199,13 @@ protected static bool TryParseDateTimeOffsetCore(string? value, out DateTimeOffs { if (DateTime.TryParseExact(value?.TrimEnd('W', 'S'), "yyMMddHHmmss", _culture, DateTimeStyles.None, out var dt)) { - result = new DateTimeOffset(dt, _dutchtimezone.GetUtcOffset(dt)); + var localDt = LocalDateTime.FromDateTime(dt); + var zonedDt = localDt.InZoneLeniently(_dutchtimezone); + result = zonedDt.ToDateTimeOffset(); + return true; } + result = default; return false; }