mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Improve date helpers. (#1499)
Rework date to string conversion, and remove nan checks from inline functions. Furtermore some inline functions are changed to normal functions. JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
parent
00b220bde6
commit
7d83293762
@ -374,10 +374,16 @@ ecma_builtin_date_prototype_dispatch_set (uint16_t builtin_routine_id, /**< buil
|
||||
|
||||
if (builtin_routine_id <= ECMA_DATE_PROTOTYPE_SET_UTC_DATE)
|
||||
{
|
||||
if (ECMA_DATE_PROTOTYPE_IS_SET_YEAR_ROUTINE (builtin_routine_id)
|
||||
&& ecma_number_is_nan (date_num))
|
||||
if (ecma_number_is_nan (date_num))
|
||||
{
|
||||
date_num = ECMA_NUMBER_ZERO;
|
||||
if (ECMA_DATE_PROTOTYPE_IS_SET_YEAR_ROUTINE (builtin_routine_id))
|
||||
{
|
||||
date_num = ECMA_NUMBER_ZERO;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ecma_make_number_value (date_num);
|
||||
}
|
||||
}
|
||||
|
||||
time_part = ecma_date_time_within_day (date_num);
|
||||
@ -449,6 +455,11 @@ ecma_builtin_date_prototype_dispatch_set (uint16_t builtin_routine_id, /**< buil
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ecma_number_is_nan (date_num))
|
||||
{
|
||||
return ecma_make_number_value (date_num);
|
||||
}
|
||||
|
||||
day_part = ecma_date_day (date_num);
|
||||
|
||||
ecma_number_t hour = ecma_date_hour_from_time (date_num);
|
||||
@ -589,7 +600,7 @@ ecma_builtin_date_prototype_dispatch_routine (uint16_t builtin_routine_id, /**<
|
||||
|
||||
if (!BUILTIN_DATE_FUNCTION_IS_UTC (builtin_routine_id))
|
||||
{
|
||||
this_num = ecma_date_local_time (this_num);
|
||||
this_num += ecma_date_local_time_zone (this_num);
|
||||
}
|
||||
|
||||
if (builtin_routine_id <= ECMA_DATE_PROTOTYPE_GET_UTC_TIMEZONE_OFFSET)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -96,18 +96,11 @@ typedef enum
|
||||
/* ecma-builtin-helpers-date.c */
|
||||
ecma_number_t ecma_date_day (ecma_number_t time);
|
||||
ecma_number_t ecma_date_time_within_day (ecma_number_t time);
|
||||
ecma_number_t ecma_date_days_in_year (ecma_number_t year);
|
||||
ecma_number_t ecma_date_day_from_year (ecma_number_t year);
|
||||
ecma_number_t ecma_date_time_from_year (ecma_number_t year);
|
||||
ecma_number_t ecma_date_year_from_time (ecma_number_t time);
|
||||
ecma_number_t ecma_date_in_leap_year (ecma_number_t time);
|
||||
ecma_number_t ecma_date_day_within_year (ecma_number_t time);
|
||||
ecma_number_t ecma_date_month_from_time (ecma_number_t time);
|
||||
ecma_number_t ecma_date_date_from_time (ecma_number_t time);
|
||||
ecma_number_t ecma_date_week_day (ecma_number_t time);
|
||||
ecma_number_t ecma_date_local_tza ();
|
||||
ecma_number_t ecma_date_daylight_saving_ta (ecma_number_t time);
|
||||
ecma_number_t ecma_date_local_time (ecma_number_t time);
|
||||
ecma_number_t ecma_date_local_time_zone (ecma_number_t time);
|
||||
ecma_number_t ecma_date_utc (ecma_number_t time);
|
||||
ecma_number_t ecma_date_hour_from_time (ecma_number_t time);
|
||||
ecma_number_t ecma_date_min_from_time (ecma_number_t time);
|
||||
|
||||
@ -45,27 +45,6 @@ main ()
|
||||
TEST_ASSERT (ecma_date_time_within_day (42.51) == 42.51);
|
||||
TEST_ASSERT (ecma_date_time_within_day (MS_PER_DAY + 42) == 42);
|
||||
|
||||
/* int ecma_date_days_in_year (year) */
|
||||
|
||||
TEST_ASSERT (ecma_date_days_in_year (0) == 366);
|
||||
TEST_ASSERT (ecma_date_days_in_year (1600) == 366);
|
||||
TEST_ASSERT (ecma_date_days_in_year (1603) == 365);
|
||||
TEST_ASSERT (ecma_date_days_in_year (1900) == 365);
|
||||
TEST_ASSERT (ecma_date_days_in_year (1970) == 365);
|
||||
TEST_ASSERT (ecma_date_days_in_year (2000) == 366);
|
||||
TEST_ASSERT (ecma_date_days_in_year (2000.45) == 366);
|
||||
TEST_ASSERT (ecma_date_days_in_year (2012) == 366);
|
||||
TEST_ASSERT (ecma_date_days_in_year (2015) == 365);
|
||||
TEST_ASSERT (ecma_date_days_in_year (285616 + 1970) == 365);
|
||||
TEST_ASSERT (ecma_date_days_in_year (-1970) == 365);
|
||||
|
||||
/* int ecma_date_day_from_year (year) */
|
||||
|
||||
TEST_ASSERT (ecma_date_day_from_year (1969) == -365);
|
||||
TEST_ASSERT (ecma_date_day_from_year (1970) == 0);
|
||||
TEST_ASSERT (ecma_date_day_from_year (1971) == 365);
|
||||
TEST_ASSERT (ecma_date_day_from_year (2000) == 10957);
|
||||
|
||||
/* int ecma_date_year_from_time (time) */
|
||||
|
||||
TEST_ASSERT (ecma_date_year_from_time (0) == 1970);
|
||||
@ -83,10 +62,6 @@ main ()
|
||||
TEST_ASSERT (ecma_date_year_from_time (START_OF_GREGORIAN_CALENDAR - 1) == -1);
|
||||
TEST_ASSERT (ecma_date_year_from_time (START_OF_GREGORIAN_CALENDAR - 3 * MS_PER_YEAR) == -3);
|
||||
|
||||
/* int ecma_date_day_within_year (time) */
|
||||
|
||||
/* FIXME: Implement */
|
||||
|
||||
/* int ecma_date_month_from_time (time) */
|
||||
|
||||
TEST_ASSERT (ecma_date_month_from_time (START_OF_GREGORIAN_CALENDAR) == 0);
|
||||
@ -105,18 +80,6 @@ main ()
|
||||
|
||||
/* FIXME: Implement */
|
||||
|
||||
/* ecma_number_t ecma_date_local_tza () */
|
||||
|
||||
/* FIXME: Implement */
|
||||
|
||||
/* ecma_number_t ecma_date_daylight_saving_ta (time) */
|
||||
|
||||
/* FIXME: Implement */
|
||||
|
||||
/* ecma_number_t ecma_date_local_time (time) */
|
||||
|
||||
/* FIXME: Implement */
|
||||
|
||||
/* ecma_number_t ecma_date_utc (time) */
|
||||
|
||||
/* FIXME: Implement */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user