1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 20:27:45 +00:00

LibJS: Use new LibUnicode API to format time zone names

This commit is contained in:
Timothy Flynn 2022-01-11 11:41:22 -05:00 committed by Linus Groh
parent e2dfbe8f67
commit c1a1370c2a
3 changed files with 28 additions and 9 deletions

View file

@ -938,7 +938,7 @@ ThrowCompletionOr<Vector<PatternPartition>> format_date_time_pattern(GlobalObjec
// The String value may also depend on the value of the [[InDST]] field of tm if f is "short", "long", "shortOffset", or "longOffset".
// If the implementation does not have a localized representation of f, then use the String value of v itself.
// FIXME: This should take [[InDST]] into account.
auto formatted_value = Unicode::get_time_zone_name(data_locale, value, style).value_or(value);
auto formatted_value = Unicode::format_time_zone(data_locale, value, style, local_time.time_since_epoch());
// iv. Append a new Record { [[Type]]: p, [[Value]]: fv } as the last element of the list result.
result.append({ "timeZoneName"sv, move(formatted_value) });

View file

@ -9,6 +9,7 @@
#include <AK/Array.h>
#include <AK/String.h>
#include <AK/StringView.h>
#include <AK/Time.h>
#include <AK/Types.h>
#include <AK/Vector.h>
#include <LibJS/Runtime/Completion.h>
@ -161,6 +162,11 @@ enum class OptionDefaults {
// Table 5: Record returned by ToLocalTime, https://tc39.es/ecma402/#table-datetimeformat-tolocaltime-record
struct LocalTime {
AK::Time time_since_epoch() const
{
return AK::Time::from_timestamp(year, month + 1, day + 1, hour, minute, second, millisecond);
}
int weekday { 0 }; // [[Weekday]]
Unicode::Era era {}; // [[Era]]
i32 year { 0 }; // [[Year]]