mirror of
https://github.com/RGBCube/serenity
synced 2025-06-14 21:12:08 +00:00
LibJS: Implement the LocalTime, UTC, and TimeWithinDay AOs
This commit is contained in:
parent
5f5bcd549e
commit
d93713b874
2 changed files with 24 additions and 0 deletions
|
@ -337,6 +337,20 @@ double local_tza(double time, bool is_utc, Optional<StringView> time_zone_overri
|
||||||
return is_utc ? offset : -offset;
|
return is_utc ? offset : -offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 21.4.1.8 LocalTime ( t ), https://tc39.es/ecma262/#sec-localtime
|
||||||
|
double local_time(double time)
|
||||||
|
{
|
||||||
|
// 1. Return t + LocalTZA(t, true).
|
||||||
|
return time + local_tza(time, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 21.4.1.9 UTC ( t ), https://tc39.es/ecma262/#sec-utc-t
|
||||||
|
double utc_time(double time)
|
||||||
|
{
|
||||||
|
// 1. Return t - LocalTZA(t, false).
|
||||||
|
return time - local_tza(time, false);
|
||||||
|
}
|
||||||
|
|
||||||
// 21.4.1.11 MakeTime ( hour, min, sec, ms ), https://tc39.es/ecma262/#sec-maketime
|
// 21.4.1.11 MakeTime ( hour, min, sec, ms ), https://tc39.es/ecma262/#sec-maketime
|
||||||
Value make_time(GlobalObject& global_object, Value hour, Value min, Value sec, Value ms)
|
Value make_time(GlobalObject& global_object, Value hour, Value min, Value sec, Value ms)
|
||||||
{
|
{
|
||||||
|
@ -365,6 +379,13 @@ double day(double time_value)
|
||||||
return floor(time_value / MS_PER_DAY);
|
return floor(time_value / MS_PER_DAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TimeWithinDay(t), https://tc39.es/ecma262/#eqn-TimeWithinDay
|
||||||
|
double time_within_day(double time)
|
||||||
|
{
|
||||||
|
// 𝔽(ℝ(t) modulo ℝ(msPerDay))
|
||||||
|
return modulo(time, MS_PER_DAY);
|
||||||
|
}
|
||||||
|
|
||||||
// 21.4.1.12 MakeDay ( year, month, date ), https://tc39.es/ecma262/#sec-makeday
|
// 21.4.1.12 MakeDay ( year, month, date ), https://tc39.es/ecma262/#sec-makeday
|
||||||
Value make_day(GlobalObject& global_object, Value year, Value month, Value date)
|
Value make_day(GlobalObject& global_object, Value year, Value month, Value date)
|
||||||
{
|
{
|
||||||
|
|
|
@ -105,7 +105,10 @@ u8 sec_from_time(double);
|
||||||
u16 ms_from_time(double);
|
u16 ms_from_time(double);
|
||||||
u8 week_day(double);
|
u8 week_day(double);
|
||||||
double local_tza(double time, bool is_utc, Optional<StringView> time_zone_override = {});
|
double local_tza(double time, bool is_utc, Optional<StringView> time_zone_override = {});
|
||||||
|
double local_time(double time);
|
||||||
|
double utc_time(double time);
|
||||||
double day(double);
|
double day(double);
|
||||||
|
double time_within_day(double);
|
||||||
Value make_time(GlobalObject& global_object, Value hour, Value min, Value sec, Value ms);
|
Value make_time(GlobalObject& global_object, Value hour, Value min, Value sec, Value ms);
|
||||||
Value make_day(GlobalObject& global_object, Value year, Value month, Value date);
|
Value make_day(GlobalObject& global_object, Value year, Value month, Value date);
|
||||||
Value make_date(Value day, Value time);
|
Value make_date(Value day, Value time);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue