summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Flynn <trflynn89@pm.me>2022-10-15 22:40:27 +0200
committerLinus Groh <mail@linusgroh.de>2022-10-15 22:55:48 +0200
commit094f9bf6a274f17fe602f11414deb9f96077f86b (patch)
tree5431467f9204db552c9898659007c8c6a3d020d0
parent2d4591dad49e33822c2a240d2b5ebe9732b1e5f1 (diff)
downloadserenity-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.cpp2
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