[vm] Fix DateTime.timeZoneName on Windows

It needs to look at the given moment to decide whether to use
summer time zone name or standard time zone name.

Previously it was looking at the current time to make this decision
which produced incorrect result: e.g. given
`DateTime.parse(2012-01-02T13:45:23)` its `timeZoneName` should be
returning standard name corresponding to the current time zone even
if we are currently running in summer time (e.g. it should
return PST if machine it is running on is in PDT).

This is revealed by a test which started to fail on Windows
because our Windows bots entered PDT.

Fixes https://github.com/dart-lang/sdk/issues/55159

TEST=corelib/date_time7_test.dart

CoreLibraryReviewExempt: No core library changes.
Change-Id: Ic938baf837c2f6130ec3f9604631701267369f87
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/356681
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
diff --git a/runtime/vm/os_win.cc b/runtime/vm/os_win.cc
index 9daec00..9e5ea55 100644
--- a/runtime/vm/os_win.cc
+++ b/runtime/vm/os_win.cc
@@ -112,13 +112,11 @@
   }
 
   // Figure out whether we're in standard or daylight.
-  bool daylight_savings = (status == TIME_ZONE_ID_DAYLIGHT);
-  if (status == TIME_ZONE_ID_UNKNOWN) {
-    tm local_time;
-    if (LocalTime(seconds_since_epoch, &local_time)) {
-      daylight_savings = (local_time.tm_isdst == 1);
-    }
+  tm local_time;
+  if (!LocalTime(seconds_since_epoch, &local_time)) {
+    return "";
   }
+  const bool daylight_savings = (local_time.tm_isdst == 1);
 
   // Convert the wchar string to a null-terminated utf8 string.
   wchar_t* wchar_name = daylight_savings ? zone_information.DaylightName
diff --git a/tests/corelib/date_time7_test.dart b/tests/corelib/date_time7_test.dart
index f59236a..41f8a94 100644
--- a/tests/corelib/date_time7_test.dart
+++ b/tests/corelib/date_time7_test.dart
@@ -21,6 +21,8 @@
     //
     // Hardcode some common timezones, in both their abbreviated and expanded
     // forms to account for differences between host platforms.
+    print(name);
+    print(offset);
     switch (name) {
       case "CET" || "Central European Time" || "Central European Standard Time":
         Expect.equals(1, offset.inHours);
@@ -34,6 +36,8 @@
         Expect.equals(-4, offset.inHours);
       case "PDT" || "Pacific Daylight Time":
         Expect.equals(-7, offset.inHours);
+      case "PST" || "Pacific Standard Time":
+        Expect.equals(-8, offset.inHours);
       case "CST" || "Central Standard Time":
         Expect.equals(-6, offset.inHours);
       case "CDT" || "Central Daylight Time":