Change jerry_port interface to allow for a correct implementation of timezones. (#2540)
The previous jerry_port interface did not allow timezones to be handled correctly, even if the host system was up to the task. This PR changes the jerry_port interface to allow a completely correct implementation to exist, and provides one (for Linux/BSD systems) in default-date.c. Fixes #1661 JerryScript-DCO-1.0-Signed-off-by: crazy2be crazy1be@gmail.com
This commit is contained in:
@@ -24,8 +24,7 @@ assert (d.getUTCDate() == 9);
|
||||
assert (d.getDay() == 4);
|
||||
assert (d.getUTCDay() == 4);
|
||||
assert (d.getHours() == 12);
|
||||
// FIXME: Missing timezone adjustment.
|
||||
//assert (d.getUTCHours() == (12 + d.getTimezoneOffset() / 60));
|
||||
assert (d.getUTCHours() == (12 + d.getTimezoneOffset() / 60));
|
||||
assert (d.getMinutes() == 13);
|
||||
assert (d.getUTCMinutes() == 13);
|
||||
assert (d.getSeconds() == 14);
|
||||
@@ -44,9 +43,8 @@ assert (d.getDate() == 9);
|
||||
assert (d.getUTCDate() == 9);
|
||||
assert (d.getDay() == 4);
|
||||
assert (d.getUTCDay() == 4);
|
||||
// FIXME: Missing timezone adjustment.
|
||||
//assert (d.getHours() == 12);
|
||||
//assert (d.getUTCHours() == (12 + d.getTimezoneOffset() / 60));
|
||||
assert (d.getHours() == Math.floor(12 - 1.5 + d.getTimezoneOffset() / 60));
|
||||
assert (d.getUTCHours() == Math.floor(12 - 1.5));
|
||||
assert (d.getMinutes() == 43);
|
||||
assert (d.getUTCMinutes() == 43);
|
||||
assert (d.getSeconds() == 14);
|
||||
@@ -65,8 +63,7 @@ assert (d.getDate() == 1);
|
||||
assert (d.getUTCDate() == 1);
|
||||
assert (d.getDay() == 4);
|
||||
assert (d.getUTCDay() == 4);
|
||||
// FIXME: Missing timezone adjustment.
|
||||
// assert (d.getHours() == 0 - (d.getTimezoneOffset() / 60));
|
||||
assert (d.getHours() == 0 - (d.getTimezoneOffset() / 60));
|
||||
assert (d.getUTCHours() == 0);
|
||||
assert (d.getMinutes() == 0);
|
||||
assert (d.getUTCMinutes() == 0);
|
||||
|
||||
+18
-19
@@ -82,25 +82,24 @@ assert (d.getUTCSeconds() == 1);
|
||||
assert (d.getUTCMilliseconds() == 1);
|
||||
|
||||
/* 15.9.5.34 Date.prototype.setHours (hour [, min [, sec [, ms ] ] ] ) */
|
||||
// FIXME: Missing timezone adjustment.
|
||||
//d.setTime(0);
|
||||
//assert (d.setHours(1) == hour + d.getTimezoneOffset() * 60000);
|
||||
//assert (d.getHours() == 1);
|
||||
//d.setTime(0);
|
||||
//assert (d.setHours(1, 1) == hour + min + d.getTimezoneOffset() * 60000);
|
||||
//assert (d.getHours() == 1);
|
||||
//assert (d.getMinutes() == 1);
|
||||
//d.setTime(0);
|
||||
//assert (d.setHours(1, 1, 1) == hour + min + sec + d.getTimezoneOffset() * 60000);
|
||||
//assert (d.getHours() == 1);
|
||||
//assert (d.getMinutes() == 1);
|
||||
//assert (d.getSeconds() == 1);
|
||||
//d.setTime(0);
|
||||
//assert (d.setHours(1, 1, 1, 1) == hour + min + sec + ms + d.getTimezoneOffset() * 60000);
|
||||
//assert (d.getHours() == 1);
|
||||
//assert (d.getMinutes() == 1);
|
||||
//assert (d.getSeconds() == 1);
|
||||
//assert (d.getMilliseconds() == 1);
|
||||
d.setTime(0);
|
||||
assert (d.setHours(1) == hour + d.getTimezoneOffset() * 60000);
|
||||
assert (d.getHours() == 1);
|
||||
d.setTime(0);
|
||||
assert (d.setHours(1, 1) == hour + min + d.getTimezoneOffset() * 60000);
|
||||
assert (d.getHours() == 1);
|
||||
assert (d.getMinutes() == 1);
|
||||
d.setTime(0);
|
||||
assert (d.setHours(1, 1, 1) == hour + min + sec + d.getTimezoneOffset() * 60000);
|
||||
assert (d.getHours() == 1);
|
||||
assert (d.getMinutes() == 1);
|
||||
assert (d.getSeconds() == 1);
|
||||
d.setTime(0);
|
||||
assert (d.setHours(1, 1, 1, 1) == hour + min + sec + ms + d.getTimezoneOffset() * 60000);
|
||||
assert (d.getHours() == 1);
|
||||
assert (d.getMinutes() == 1);
|
||||
assert (d.getSeconds() == 1);
|
||||
assert (d.getMilliseconds() == 1);
|
||||
|
||||
/* 15.9.5.35 Date.prototype.setUTCHours (hour [, min [, sec [, ms ] ] ] ) */
|
||||
d.setTime(0);
|
||||
|
||||
Reference in New Issue
Block a user