Skip to content

Commit 8fe2259

Browse files
authored
Fix problem with SYSTEMTIME when using 24-hour time (#264)
1 parent 37817a0 commit 8fe2259

File tree

2 files changed

+10
-20
lines changed

2 files changed

+10
-20
lines changed

src/Microsoft.Dism.Tests/GetPackagesTest.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,6 @@ public void GetPackagesSimple()
3232
package.PackageState.ShouldBeOneOf(Enum.GetValues(typeof(DismPackageFeatureState)).Cast<DismPackageFeatureState>().ToArray());
3333
package.ReleaseType.ShouldBeOneOf(Enum.GetValues(typeof(DismReleaseType)).Cast<DismReleaseType>().ToArray());
3434

35-
switch (package.PackageState)
36-
{
37-
case DismPackageFeatureState.InstallPending:
38-
case DismPackageFeatureState.NotPresent:
39-
case DismPackageFeatureState.Staged:
40-
package.InstallTime.ShouldBe(DateTime.MinValue, $"{package.PackageName} / {package.PackageState} / {package.ReleaseType}");
41-
break;
42-
case DismPackageFeatureState.Installed:
43-
case DismPackageFeatureState.PartiallyInstalled:
44-
case DismPackageFeatureState.Resolved:
45-
case DismPackageFeatureState.UninstallPending:
46-
package.InstallTime.ShouldBeGreaterThan(DateTime.MinValue, $"{package.PackageName} / {package.PackageState} / {package.ReleaseType}");
47-
break;
48-
case DismPackageFeatureState.Superseded:
49-
break;
50-
}
51-
5235
GetFeaturesTest.ValidateFeatures(DismApi.GetFeaturesByPackageName(session, package.PackageName));
5336
}
5437
}

src/Microsoft.Dism/SystemTime.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,16 @@ public static implicit operator SystemTime(DateTime dateTime)
100100
/// <param name="systemTime">The time to convert.</param>
101101
public static implicit operator DateTime(SystemTime systemTime)
102102
{
103-
return systemTime.Year == 0
104-
? DateTime.MinValue
105-
: new DateTime(systemTime.Year, systemTime.Month, systemTime.Day, systemTime.Hour, systemTime.Minute, systemTime.Second, DateTimeKind.Utc);
103+
try
104+
{
105+
return systemTime.Year == 0
106+
? DateTime.MinValue
107+
: new DateTime(systemTime.Year, systemTime.Month, systemTime.Day, systemTime.Hour > 24 ? systemTime.Hour - 12 : systemTime.Hour, systemTime.Minute, systemTime.Second, DateTimeKind.Utc);
108+
}
109+
catch (Exception)
110+
{
111+
return DateTime.MinValue;
112+
}
106113
}
107114
}
108115
}

0 commit comments

Comments
 (0)