Просмотр исходного кода

LibCore: Use altzone for the current time zone offset during DST

Also use the daylight global to determine the current time zone name,
i.e. tzname[0] is standard time, tzname[1] is daylight savings time.

Note that altzone isn't required to be defined on all systems, so we
have to #ifdef to check if it exists in order for Lagom to build.
Timothy Flynn 3 лет назад
Родитель
Сommit
0dfb9714fe
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      Userland/Libraries/LibCore/DateTime.cpp

+ 4 - 2
Userland/Libraries/LibCore/DateTime.cpp

@@ -106,7 +106,9 @@ String DateTime::to_string(StringView format) const
     const int format_len = format.length();
 
     auto format_time_zone_offset = [&](bool with_separator) {
-#ifndef __FreeBSD__
+#if defined(__serenity__)
+        auto offset_seconds = daylight ? -altzone : -timezone;
+#elif !defined(__FreeBSD__)
         auto offset_seconds = -timezone;
 #else
         auto offset_seconds = 0;
@@ -251,7 +253,7 @@ String DateTime::to_string(StringView format) const
                 format_time_zone_offset(true);
                 break;
             case 'Z':
-                builder.append(tzname[0]);
+                builder.append(tzname[daylight]);
                 break;
             case '%':
                 builder.append('%');