mirror of
https://github.com/tc39/test262.git
synced 2025-07-28 08:24:23 +02:00
Temporal: Replace TemporalHelpers.specificOffsetTimeZone with offset strings
This commit is contained in:
parent
0a1cb1307f
commit
27bc974287
@ -1662,41 +1662,6 @@ var TemporalHelpers = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
|
||||||
* specificOffsetTimeZone():
|
|
||||||
*
|
|
||||||
* This returns an instance of a custom time zone class, which returns a
|
|
||||||
* specific custom value from its getOffsetNanosecondsFrom() method. This is
|
|
||||||
* for the purpose of testing the validation of what this method returns.
|
|
||||||
*
|
|
||||||
* It also returns an empty array from getPossibleInstantsFor(), so as to
|
|
||||||
* trigger calls to getOffsetNanosecondsFor() when used from the
|
|
||||||
* BuiltinTimeZoneGetInstantFor operation.
|
|
||||||
*/
|
|
||||||
specificOffsetTimeZone(offsetValue) {
|
|
||||||
class SpecificOffsetTimeZone extends Temporal.TimeZone {
|
|
||||||
constructor(offsetValue) {
|
|
||||||
super("UTC");
|
|
||||||
this._offsetValue = offsetValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
getOffsetNanosecondsFor() {
|
|
||||||
return this._offsetValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
getPossibleInstantsFor(dt) {
|
|
||||||
if (typeof this._offsetValue !== 'number' || Math.abs(this._offsetValue) >= 86400e9 || isNaN(this._offsetValue)) return [];
|
|
||||||
const zdt = dt.toZonedDateTime("UTC").add({ nanoseconds: -this._offsetValue });
|
|
||||||
return [zdt.toInstant()];
|
|
||||||
}
|
|
||||||
|
|
||||||
get id() {
|
|
||||||
return this.getOffsetStringFor(new Temporal.Instant(0n));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new SpecificOffsetTimeZone(offsetValue);
|
|
||||||
},
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* timeZoneObserver:
|
* timeZoneObserver:
|
||||||
* A custom calendar that behaves exactly like the UTC time zone but tracks
|
* A custom calendar that behaves exactly like the UTC time zone but tracks
|
||||||
|
@ -35,10 +35,9 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const date = new Temporal.PlainDate(2000, 5, 2);
|
const date = new Temporal.PlainDate(2000, 5, 2);
|
||||||
const pdt = date.toPlainDateTime(datetime);
|
const pdt = date.toPlainDateTime(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertPlainDateTime(pdt, 2000, 5, "M05", 2, 1, 1, 1, 1, 0, 999);
|
TemporalHelpers.assertPlainDateTime(pdt, 2000, 5, "M05", 2, 0, 59, 1, 1, 1, 1);
|
||||||
|
@ -28,19 +28,16 @@ info: |
|
|||||||
ii. 1. Set _plainDateTime_ to ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
ii. 1. Set _plainDateTime_ to ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
||||||
sec-temporal.plaindate.prototype.tozoneddatetime step 6.a:
|
sec-temporal.plaindate.prototype.tozoneddatetime step 6.a:
|
||||||
a. Set _temporalTime_ to ? ToTemporalTime(_temporalTime_).
|
a. Set _temporalTime_ to ? ToTemporalTime(_temporalTime_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const otherTimeZone = new Temporal.TimeZone("UTC"); // should not be used to convert datetime to PlainTime
|
|
||||||
const date = new Temporal.PlainDate(2000, 5, 2);
|
const date = new Temporal.PlainDate(2000, 5, 2);
|
||||||
const zdt = date.toZonedDateTime({ timeZone: otherTimeZone, plainTime: datetime });
|
const zdt = date.toZonedDateTime({ timeZone: "UTC", plainTime: datetime });
|
||||||
|
|
||||||
assert.sameValue(zdt.microsecond, 0);
|
assert.sameValue(zdt.hour, 0);
|
||||||
assert.sameValue(zdt.nanosecond, 999);
|
assert.sameValue(zdt.minute, 59);
|
||||||
|
@ -35,9 +35,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const pdt = Temporal.PlainDateTime.from(datetime);
|
const pdt = Temporal.PlainDateTime.from(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertPlainDateTime(pdt, 1970, 1, "M01", 1, 1, 1, 1, 1, 0, 999);
|
TemporalHelpers.assertPlainDateTime(pdt, 1970, 1, "M01", 1, 0, 59, 1, 1, 1, 1);
|
||||||
|
@ -28,14 +28,12 @@ info: |
|
|||||||
ii. 1. Return ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
ii. 1. Return ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
||||||
sec-temporal.plaindatetime.prototype.until step 3:
|
sec-temporal.plaindatetime.prototype.until step 3:
|
||||||
3. Set _other_ ? ToTemporalDateTime(_other_).
|
3. Set _other_ ? ToTemporalDateTime(_other_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
assert(new Temporal.PlainDateTime(1970, 1, 1, 1, 1, 1, 1, 0, 999).equals(datetime));
|
assert(new Temporal.PlainDateTime(1970, 1, 1, 0, 59, 1, 1, 1, 1).equals(datetime));
|
||||||
|
@ -35,9 +35,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const diff = new Temporal.PlainDateTime(1970, 1, 1).since(datetime);
|
const diff = new Temporal.PlainDateTime(1970, 1, 1).since(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, -1, -1, -1, -1, 0, -999);
|
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, 0, -59, -1, -1, -1, -1);
|
||||||
|
@ -35,9 +35,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const diff = new Temporal.PlainDateTime(1970, 1, 1).until(datetime);
|
const diff = new Temporal.PlainDateTime(1970, 1, 1).until(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, 1, 1, 1, 1, 0, 999);
|
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, 0, 59, 1, 1, 1, 1);
|
||||||
|
@ -35,10 +35,9 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const pdt = new Temporal.PlainDateTime(2000, 5, 2);
|
const pdt = new Temporal.PlainDateTime(2000, 5, 2);
|
||||||
const newpdt = pdt.withPlainTime(datetime);
|
const newpdt = pdt.withPlainTime(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertPlainDateTime(newpdt, 2000, 5, "M05", 2, 1, 1, 1, 1, 0, 999);
|
TemporalHelpers.assertPlainDateTime(newpdt, 2000, 5, "M05", 2, 0, 59, 1, 1, 1, 1);
|
||||||
|
@ -35,9 +35,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const time = Temporal.PlainTime.from(datetime);
|
const time = Temporal.PlainTime.from(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertPlainTime(time, 1, 1, 1, 1, 0, 999);
|
TemporalHelpers.assertPlainTime(time, 0, 59, 1, 1, 1, 1);
|
||||||
|
@ -28,14 +28,12 @@ info: |
|
|||||||
ii. 1. Set _plainDateTime_ to ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
ii. 1. Set _plainDateTime_ to ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
||||||
sec-temporal.plaintime.prototype.equals step 3:
|
sec-temporal.plaintime.prototype.equals step 3:
|
||||||
3. Set _other_ to ? ToTemporalTime(_other_).
|
3. Set _other_ to ? ToTemporalTime(_other_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
assert(new Temporal.PlainTime(1, 1, 1, 1, 0, 999).equals(datetime));
|
assert(new Temporal.PlainTime(0, 59, 1, 1, 1, 1).equals(datetime));
|
||||||
|
@ -35,9 +35,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const diff = new Temporal.PlainTime().since(datetime);
|
const diff = new Temporal.PlainTime().since(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, -1, -1, -1, -1, 0, -999);
|
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, 0, -59, -1, -1, -1, -1);
|
||||||
|
@ -35,9 +35,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const diff = new Temporal.PlainTime().until(datetime);
|
const diff = new Temporal.PlainTime().until(datetime);
|
||||||
|
|
||||||
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, 1, 1, 1, 1, 0, 999);
|
TemporalHelpers.assertDuration(diff, 0, 0, 0, 0, 0, 59, 1, 1, 1, 1);
|
||||||
|
@ -24,20 +24,18 @@ info: |
|
|||||||
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.day step 6:
|
sec-get-temporal.zoneddatetime.prototype.day step 6:
|
||||||
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(86400_000_000_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(86400_000_000_001n, tz);
|
|
||||||
|
|
||||||
assert.sameValue(datetime.day, 1);
|
assert.sameValue(datetime.day, 1);
|
||||||
assert.sameValue(datetime.hour, 23);
|
assert.sameValue(datetime.hour, 23);
|
||||||
assert.sameValue(datetime.minute, 59);
|
assert.sameValue(datetime.minute, 58);
|
||||||
assert.sameValue(datetime.second, 59);
|
assert.sameValue(datetime.second, 0);
|
||||||
assert.sameValue(datetime.millisecond, 999);
|
assert.sameValue(datetime.millisecond, 0);
|
||||||
assert.sameValue(datetime.microsecond, 999);
|
assert.sameValue(datetime.microsecond, 0);
|
||||||
assert.sameValue(datetime.nanosecond, 999);
|
assert.sameValue(datetime.nanosecond, 1);
|
||||||
|
@ -31,10 +31,13 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// ZonedDateTime
|
// ZonedDateTime
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1001n, tz);
|
|
||||||
|
|
||||||
const fields = datetime.getISOFields();
|
const fields = datetime.getISOFields();
|
||||||
|
|
||||||
assert.sameValue(fields.isoMicrosecond, 0);
|
assert.sameValue(fields.isoHour, 23);
|
||||||
assert.sameValue(fields.isoNanosecond, 999);
|
assert.sameValue(fields.isoMinute, 58);
|
||||||
|
assert.sameValue(fields.isoSecond, 0);
|
||||||
|
assert.sameValue(fields.isoMillisecond, 0);
|
||||||
|
assert.sameValue(fields.isoMicrosecond, 1);
|
||||||
|
assert.sameValue(fields.isoNanosecond, 1);
|
||||||
|
@ -22,19 +22,17 @@ info: |
|
|||||||
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.hour step 6:
|
sec-get-temporal.zoneddatetime.prototype.hour step 6:
|
||||||
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3600_000_000_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3600_000_000_001n, tz);
|
|
||||||
|
|
||||||
assert.sameValue(datetime.hour, 0);
|
assert.sameValue(datetime.hour, 0);
|
||||||
assert.sameValue(datetime.minute, 59);
|
assert.sameValue(datetime.minute, 58);
|
||||||
assert.sameValue(datetime.second, 59);
|
assert.sameValue(datetime.second, 0);
|
||||||
assert.sameValue(datetime.millisecond, 999);
|
assert.sameValue(datetime.millisecond, 0);
|
||||||
assert.sameValue(datetime.microsecond, 999);
|
assert.sameValue(datetime.microsecond, 0);
|
||||||
assert.sameValue(datetime.nanosecond, 999);
|
assert.sameValue(datetime.nanosecond, 1);
|
||||||
|
@ -14,15 +14,14 @@ info: |
|
|||||||
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.microsecond step 6:
|
sec-get-temporal.zoneddatetime.prototype.microsecond step 6:
|
||||||
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1001n, tz);
|
|
||||||
|
|
||||||
assert.sameValue(datetime.microsecond, 0);
|
assert.sameValue(datetime.minute, 58);
|
||||||
assert.sameValue(datetime.nanosecond, 999);
|
assert.sameValue(datetime.microsecond, 1);
|
||||||
|
assert.sameValue(datetime.nanosecond, 1);
|
||||||
|
@ -16,16 +16,15 @@ info: |
|
|||||||
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.millisecond step 6:
|
sec-get-temporal.zoneddatetime.prototype.millisecond step 6:
|
||||||
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1_000_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1_000_001n, tz);
|
|
||||||
|
|
||||||
assert.sameValue(datetime.millisecond, 0);
|
assert.sameValue(datetime.minute, 58);
|
||||||
assert.sameValue(datetime.microsecond, 999);
|
assert.sameValue(datetime.millisecond, 1);
|
||||||
assert.sameValue(datetime.nanosecond, 999);
|
assert.sameValue(datetime.microsecond, 0);
|
||||||
|
assert.sameValue(datetime.nanosecond, 1);
|
||||||
|
@ -22,18 +22,16 @@ info: |
|
|||||||
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.minute step 6:
|
sec-get-temporal.zoneddatetime.prototype.minute step 6:
|
||||||
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(60_000_000_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(60_000_000_001n, tz);
|
|
||||||
|
|
||||||
assert.sameValue(datetime.minute, 0);
|
assert.sameValue(datetime.minute, 59);
|
||||||
assert.sameValue(datetime.second, 59);
|
assert.sameValue(datetime.second, 0);
|
||||||
assert.sameValue(datetime.millisecond, 999);
|
assert.sameValue(datetime.millisecond, 0);
|
||||||
assert.sameValue(datetime.microsecond, 999);
|
assert.sameValue(datetime.microsecond, 0);
|
||||||
assert.sameValue(datetime.nanosecond, 999);
|
assert.sameValue(datetime.nanosecond, 1);
|
||||||
|
@ -18,17 +18,16 @@ info: |
|
|||||||
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
3. Set _result_ to ? BalanceISODateTime(_result_.[[Year]], _result_.[[Month]], _result_.[[Day]], _result_.[[Hour]], _result_.[[Minute]], _result_.[[Second]], _result_.[[Millisecond]], _result_.[[Microsecond]], _result_.[[Nanosecond]] + _offsetNanoseconds_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.second step 6:
|
sec-get-temporal.zoneddatetime.prototype.second step 6:
|
||||||
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
6. Let _temporalDateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _calendar_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1_000_000_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1_000_000_001n, tz);
|
|
||||||
|
|
||||||
assert.sameValue(datetime.second, 0);
|
assert.sameValue(datetime.minute, 58);
|
||||||
assert.sameValue(datetime.millisecond, 999);
|
assert.sameValue(datetime.second, 1);
|
||||||
assert.sameValue(datetime.microsecond, 999);
|
assert.sameValue(datetime.millisecond, 0);
|
||||||
assert.sameValue(datetime.nanosecond, 999);
|
assert.sameValue(datetime.microsecond, 0);
|
||||||
|
assert.sameValue(datetime.nanosecond, 1);
|
||||||
|
@ -26,16 +26,14 @@ info: |
|
|||||||
9. Let _dateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _isoCalendar_).
|
9. Let _dateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _isoCalendar_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.tojson step 3:
|
sec-get-temporal.zoneddatetime.prototype.tojson step 3:
|
||||||
3. Return ? TemporalZonedDateTimeToString(_zonedDateTime_, *"auto"*, *"auto"*, *"auto"*, *"auto"*).
|
3. Return ? TemporalZonedDateTimeToString(_zonedDateTime_, *"auto"*, *"auto"*, *"auto"*, *"auto"*).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// ZonedDateTime
|
// ZonedDateTime
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1001n, tz);
|
|
||||||
|
|
||||||
const jsonString = datetime.toJSON();
|
const jsonString = datetime.toJSON();
|
||||||
|
|
||||||
assert.sameValue(jsonString, "1970-01-01T00:00:00.000000999+00:00[-00:00:00.000000002]");
|
assert.sameValue(jsonString, "1969-12-31T23:58:00.000001001-00:02[-00:02]");
|
||||||
|
@ -31,9 +31,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1001n, tz);
|
|
||||||
|
|
||||||
const pdt = datetime.toPlainDateTime();
|
const pdt = datetime.toPlainDateTime();
|
||||||
|
|
||||||
TemporalHelpers.assertPlainDateTime(pdt, 1970, 1, "M01", 1, 0, 0, 0, 0, 0, 999);
|
TemporalHelpers.assertPlainDateTime(pdt, 1969, 12, "M12", 31, 23, 58, 0, 0, 1, 1);
|
||||||
|
@ -31,9 +31,8 @@ features: [Temporal]
|
|||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1001n, tz);
|
|
||||||
|
|
||||||
const time = datetime.toPlainTime();
|
const time = datetime.toPlainTime();
|
||||||
|
|
||||||
TemporalHelpers.assertPlainTime(time, 0, 0, 0, 0, 0, 999);
|
TemporalHelpers.assertPlainTime(time, 23, 58, 0, 0, 1, 1);
|
||||||
|
@ -26,16 +26,14 @@ info: |
|
|||||||
9. Let _dateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _isoCalendar_).
|
9. Let _dateTime_ be ? BuiltinTimeZoneGetPlainDateTimeFor(_timeZone_, _instant_, _isoCalendar_).
|
||||||
sec-get-temporal.zoneddatetime.prototype.tostring step 9:
|
sec-get-temporal.zoneddatetime.prototype.tostring step 9:
|
||||||
9. Return ? TemporalZonedDateTimeToString(_zonedDateTime_, _precision_.[[Precision]], _showCalendar_, _showTimeZone_, _showOffset_, _precision_.[[Increment]], _precision_.[[Unit]], _roundingMode_).
|
9. Return ? TemporalZonedDateTimeToString(_zonedDateTime_, _precision_.[[Precision]], _showCalendar_, _showTimeZone_, _showOffset_, _precision_.[[Increment]], _precision_.[[Unit]], _roundingMode_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// ZonedDateTime
|
// ZonedDateTime
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(1001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(1001n, tz);
|
|
||||||
|
|
||||||
const isoString = datetime.toString();
|
const isoString = datetime.toString();
|
||||||
|
|
||||||
assert.sameValue(isoString, "1970-01-01T00:00:00.000000999+00:00[-00:00:00.000000002]");
|
assert.sameValue(isoString, "1969-12-31T23:58:00.000001001-00:02[-00:02]");
|
||||||
|
@ -28,18 +28,16 @@ info: |
|
|||||||
ii. 1. Set _plainDateTime_ to ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
ii. 1. Set _plainDateTime_ to ? BuiltinTimeZoneGetPlainDateTimeFor(_item_.[[TimeZone]], _instant_, _item_.[[Calendar]]).
|
||||||
sec-temporal.zoneddatetime.prototype.withplaintime step 4.a:
|
sec-temporal.zoneddatetime.prototype.withplaintime step 4.a:
|
||||||
a. Let _plainTime_ be ? ToTemporalTime(_plainTimeLike_).
|
a. Let _plainTime_ be ? ToTemporalTime(_plainTimeLike_).
|
||||||
includes: [temporalHelpers.js]
|
|
||||||
features: [Temporal]
|
features: [Temporal]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
// This code path is encountered if the time zone offset is negative and its
|
// This code path is encountered if the time zone offset is negative and its
|
||||||
// absolute value in nanoseconds is greater than the nanosecond field of the
|
// absolute value in nanoseconds is greater than the nanosecond field of the
|
||||||
// exact time's epoch parts
|
// exact time's epoch parts
|
||||||
const tz = TemporalHelpers.specificOffsetTimeZone(-2);
|
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, "-00:02");
|
||||||
const datetime = new Temporal.ZonedDateTime(3661_001_001_001n, tz);
|
|
||||||
|
|
||||||
const zdt = new Temporal.ZonedDateTime(86400_000_000_000n, "UTC"); // UTC should not be used to convert datetime -> PlainTime
|
const zdt = new Temporal.ZonedDateTime(86400_000_000_000n, "UTC"); // UTC should not be used to convert datetime -> PlainTime
|
||||||
const newzdt = zdt.withPlainTime(datetime);
|
const newzdt = zdt.withPlainTime(datetime);
|
||||||
|
|
||||||
assert.sameValue(newzdt.microsecond, 0);
|
assert.sameValue(newzdt.hour, 0);
|
||||||
assert.sameValue(newzdt.nanosecond, 999);
|
assert.sameValue(newzdt.minute, 59);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user