diff options
author | Timothy Flynn <trflynn89@pm.me> | 2022-10-15 22:40:27 +0200 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-10-15 22:55:48 +0200 |
commit | 094f9bf6a274f17fe602f11414deb9f96077f86b (patch) | |
tree | 5431467f9204db552c9898659007c8c6a3d020d0 | |
parent | 2d4591dad49e33822c2a240d2b5ebe9732b1e5f1 (diff) | |
download | serenity-094f9bf6a274f17fe602f11414deb9f96077f86b.zip |
LibJS: Subtract time zone offsets when converting from local time to UTC
When converting to UTC, the UTC AO first tries to disambiguate possible
time zone offsets for the given local time. When doing so, the
GetNamedTimeZoneEpochNanoseconds AO must *subtract* the found time zone
offset from the local time to convert to UTC. The same is performed
later in the UTC AO when returning the final UTC time (step 5).
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/Date.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/Date.cpp b/Userland/Libraries/LibJS/Runtime/Date.cpp index 6216433efc..de4fb4cbbf 100644 --- a/Userland/Libraries/LibJS/Runtime/Date.cpp +++ b/Userland/Libraries/LibJS/Runtime/Date.cpp @@ -342,7 +342,7 @@ Vector<Crypto::SignedBigInteger> get_named_time_zone_epoch_nanoseconds(StringVie // Can only fail if the time zone identifier is invalid, which cannot be the case here. VERIFY(offset.has_value()); - return { local_nanoseconds.plus(Crypto::SignedBigInteger { offset->seconds }.multiplied_by(s_one_billion_bigint)) }; + return { local_nanoseconds.minus(Crypto::SignedBigInteger { offset->seconds }.multiplied_by(s_one_billion_bigint)) }; } // 21.4.1.9 GetNamedTimeZoneOffsetNanoseconds ( timeZoneIdentifier, epochNanoseconds ), https://tc39.es/ecma262/#sec-getnamedtimezoneoffsetnanoseconds |