Ver código fonte

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).
Timothy Flynn 2 anos atrás
pai
commit
094f9bf6a2
1 arquivos alterados com 1 adições e 1 exclusões
  1. 1 1
      Userland/Libraries/LibJS/Runtime/Date.cpp

+ 1 - 1
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