TimeZone.cpp 779 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2024, Tim Flynn <trflynn89@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #define AK_DONT_REPLACE_STD
  7. #include <AK/NonnullOwnPtr.h>
  8. #include <LibUnicode/ICU.h>
  9. #include <LibUnicode/TimeZone.h>
  10. #include <unicode/timezone.h>
  11. namespace Unicode {
  12. String current_time_zone()
  13. {
  14. UErrorCode status = U_ZERO_ERROR;
  15. auto time_zone = adopt_own_if_nonnull(icu::TimeZone::detectHostTimeZone());
  16. if (!time_zone)
  17. return "UTC"_string;
  18. icu::UnicodeString time_zone_id;
  19. time_zone->getID(time_zone_id);
  20. icu::UnicodeString time_zone_name;
  21. time_zone->getCanonicalID(time_zone_id, time_zone_name, status);
  22. if (icu_failure(status))
  23. return "UTC"_string;
  24. return icu_string_to_string(time_zone_name);
  25. }
  26. }