Skip to content

Commit 8780783

Browse files
committed
fixed time conversion to local time when zone is specified and updated tests
1 parent c54414a commit 8780783

File tree

2 files changed

+2
-3
lines changed

2 files changed

+2
-3
lines changed

Asn1Parser/Utils/DateTimeUtils.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ static DateTime extractDateTime(String strValue, out TimeZoneInfo? zone) {
6363
DateTime retValue = extractDateTime(strValue, msDelimiter, zoneDelimiter);
6464
if (hasZone) {
6565
zone = bindZone(hours, minutes);
66-
//retValue = retValue.AddHours(hours);
67-
//retValue = retValue.AddMinutes(minutes);
66+
retValue = TimeZoneInfo.ConvertTimeToUtc(retValue, zone).ToLocalTime();
6867
} else {
6968
retValue = DateTime.SpecifyKind(retValue, DateTimeKind.Utc).ToLocalTime();
7069
}

tests/Asn1Parser.Tests/Asn1DateTimeTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ public class Asn1DateTimeTests {
1313
public void TestZuluSimple() {
1414
var dt = DateTime.ParseExact("2024-08-07 16:12:37", "yyyy-MM-dd HH:mm:ss", null);
1515
var gt = new Asn1GeneralizedTime(dt);
16-
Assert.AreEqual(DateTimeKind.Local, gt.Value.Kind);
1716
assertDateTimeEncode(Asn1Type.GeneralizedTime, gt, dt, "yyyyMMddHHmmssZ");
1817
}
1918
[TestMethod, Description("Test date/time with fractions and fraction is zero")]
@@ -58,6 +57,7 @@ public void TestTimeZoneFraction() {
5857
static void assertDateTimeEncode(Asn1Type expectedType, Asn1DateTime adt, DateTime dt, String expectedFormat, Boolean decode = false) {
5958
// assert type
6059
Assert.AreEqual((Byte)expectedType, adt.Tag);
60+
Assert.AreEqual(DateTimeKind.Local, adt.Value.Kind);
6161

6262
String gts = Encoding.ASCII.GetString(adt.GetRawData().Skip(2).ToArray());
6363
Assert.AreEqual(dt, adt.Value);

0 commit comments

Comments
 (0)