From a90513f70c16fc912149cd163616f8bd139d1377 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 12 Jul 2020 21:25:43 +0100 Subject: [PATCH] Fix conversion of ISO9660 to UTC. Fixes #366. --- DateHandlers.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DateHandlers.cs b/DateHandlers.cs index 0b227c8..12fc104 100644 --- a/DateHandlers.cs +++ b/DateHandlers.cs @@ -171,10 +171,13 @@ namespace Aaru "decodedDT = new DateTime({0}, {1}, {2}, {3}, {4}, {5}, {6}, DateTimeKind.Unspecified);", year, month, day, hour, minute, second, hundredths * 10); + sbyte difference = (sbyte)vdDateTime[16]; + var decodedDt = new DateTime(year, month, day, hour, minute, second, hundredths * 10, DateTimeKind.Unspecified); - return decodedDt; + // Convert ISO9660 time from GMT to UTC and remove the difference from GMT. Doing the removal first could cause problems if that makes it cross over a leap day, or a leap second + return TimeZoneInfo.ConvertTimeBySystemTimeZoneId(decodedDt, "GMT", "UTC").AddMinutes(difference * -15); } /// Converts a VMS timestamp to a .NET DateTime