boa-dev / boa

Boa is an embeddable and experimental Javascript engine written in Rust. Currently, it has support for some of the language.
MIT License
5.09k stars 400 forks source link

Tracking issue for the `Temporal` builtin #1804

Open Razican opened 2 years ago

Razican commented 2 years ago

Tracking for the Temporal built-in implementation

ECMASCript feature The new Temporal API has been introduced to improve date handling in JavaScript, and we should add it to Boa to be up to date with the current ECMAScript standard. Tests have been added to the official ECMAScript Test Suite (test262), so we need to pass these tests to get full coverage.

The current proposal (Stage 3) specification can be found here: https://tc39.es/proposal-temporal/

In order to implement this new proposal, you can follow the example of other builtin objects, and feel free to ask for help: https://github.com/boa-dev/boa/tree/main/boa/src/builtins

Example code

This code should now work and give the expected result:

// exact time since the Unix epoch on 1 Janary, 1970 UTC
Temporal.now.instant();
Temporal.now.instant().epochSeconds;
Temporal.now.instant().epochMilliseconds;

// current time zone
Temporal.now.timeZone();

// time in current location, e.g.
// 2021-09-18T04:17:48.435068431-04:00[America/New_York]
Temporal.now.zonedDateTimeISO();

// time in another time zone, e.g.
// 2021-09-18T09:17:48.438068435+01:00[Europe/London]
Temporal.now.zonedDateTimeISO('Europe/London');
jasonwilliams commented 2 years ago

https://github.com/boa-dev/boa/issues/1180 Is related to this

lupd commented 2 years ago

I'd like to attempt to implement this.

jasonwilliams commented 2 years ago

Great. I’ve assigned you @lupd