訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
ECMAScriptは、年数に任意の日をマップする為とその年内における月と日付を決める為に推定(推論・外挿・補外)したグレゴリアンシステム(であるグレゴリオ暦)を使用します。 このシステム内では、うるう(閏)年は、4で割ったり、100で割るか400で割ることによってそれらを正確なものにします(調整します)。 年間の数 y にある日数は、よって以下のように定義されます。 (moduloは、剰余)
DaysInYear(y) = (y modulo 4) ≠ 0 である場合、365 = (y modulo 4) = 0 且つ、 (y modulo 100) ≠ 0 である場合、366 = (y modulo 100) = 0 且つ、 (y modulo 400) ≠ 0 である場合、365 = (y modulo 400) = 0 である場合、366
全ての非うるう年は、通常の1か月の日数である365日であり、閏年には、2月に別途1日を(追加して)持たせます。 年 y の 最初の 日の日数は、以下(の式)によって与えられます。
DayFromYear(y) = 365 x (y-1970) + floor((y-1969)/4) - floor((y-1901)/100) + floor((y-1601)/400)
年の始まりの時間の値は、
TimeFromYear(y) = msPerDay x DayFromYear(y)
時間の値は、以下によって1年を決めます。
YearFromTime(t) = the largest integer y (closest to positive infinity) such that TimeFromYear(y) ≦ t ( TimeFromYear(y) ≦ t のような (限りなくyに近い正の無限大である)最も大きな整数 y )
うるう年関数は、うるう年である場合、1、それ以外の場合、ゼロです。
InLeapYear(t) = 0 if DaysInYear(YearFromTime(t)) = 365 = 1 if DaysInYear(YearFromTime(t)) = 366