[WIN] Use GetTimeZoneInformation() for getting the timezone name
authorparoga@webkit.org <paroga@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Aug 2012 07:31:12 +0000 (07:31 +0000)
committerparoga@webkit.org <paroga@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Aug 2012 07:31:12 +0000 (07:31 +0000)
https://bugs.webkit.org/show_bug.cgi?id=91936

Reviewed by Ryosuke Niwa.

The MS CRT implementation of strftime calls the same functions in the background.
Using them directly avoids the overhead of parsing the format string and removes
the dependency on strftime() for WinCE where this function does not exist.

* runtime/DateConversion.cpp:
(JSC::formatTime):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@125004 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/DateConversion.cpp

index 108978c..a2e5596 100644 (file)
@@ -1,3 +1,17 @@
+2012-08-08  Patrick Gansterer  <paroga@webkit.org>
+
+        [WIN] Use GetTimeZoneInformation() for getting the timezone name
+        https://bugs.webkit.org/show_bug.cgi?id=91936
+
+        Reviewed by Ryosuke Niwa.
+
+        The MS CRT implementation of strftime calls the same functions in the background.
+        Using them directly avoids the overhead of parsing the format string and removes
+        the dependency on strftime() for WinCE where this function does not exist.
+
+        * runtime/DateConversion.cpp:
+        (JSC::formatTime):
+
 2012-08-07  Gabor Ballabas  <gaborb@inf.u-szeged.hu>
 
         Refactor magic numbers in the ARM port of DFG-JIT
index 6f365d0..4783981 100644 (file)
 #include <wtf/DateMath.h>
 #include <wtf/text/StringBuilder.h>
 
+#if OS(WINDOWS)
+#include <windows.h>
+#endif
+
 using namespace WTF;
 
 namespace JSC {
@@ -100,9 +104,15 @@ UString formatDateTime(const GregorianDateTime& t, DateTimeFormat format, bool a
             appendNumber<2>(builder, offset / 60);
             appendNumber<2>(builder, offset % 60);
 
+#if OS(WINDOWS)
+            TIME_ZONE_INFORMATION timeZoneInformation;
+            GetTimeZoneInformation(&timeZoneInformation);
+            const WCHAR* timeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName;
+#else
             struct tm gtm = t;
             char timeZoneName[70];
             strftime(timeZoneName, sizeof(timeZoneName), "%Z", &gtm);
+#endif
             if (timeZoneName[0]) {
                 builder.append(" (");
                 builder.append(timeZoneName);