summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Runtime/Date.cpp
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 /Userland/Libraries/LibJS/Runtime/Date.cpp
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).
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime/Date.cpp')
-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