Skip to main content

Module date

Module date 

Source

Constants§

MONTH_ABBREVS 🔒

Functions§

civil_from_days 🔒
compose_civil_ms 🔒
Date.prototype.set* 系メソッドが setTime も含めて1つも実装されておらず、 date_get に getter しか登録されていない丸ごと未対応バグだった (d.setFullYear(2025)/d.setDate(d.getDate()+1) 等、Date を書き換える 定番イディオムが軒並み undefined is not a function になっていた)。 date_ctor の多引数分岐と同じ正規化ロジック(月は0始まり・範囲外は繰り上げ/ 繰り下げ)を共有ヘルパへ切り出し、getter と対称な set* 一式を追加する。
date_ctor 🔒
new Date(...)construct_object が用意する this は使わず、ObjKind::DateObj を 積んだオブジェクトを直接返す(RegExp/Map/Set と同じ設計)。 対応する引数形式: 0引数(現在時刻)/ 1引数(epoch ミリ秒 or ISO 8601 日時文字列)/ 2引数以上(年, 月[0始まり], 日?, 時?, 分?, 秒?, ミリ秒?)。
date_get
date_get_date 🔒
date_get_day 🔒
date_get_full_year 🔒
date_get_hours 🔒
date_get_milliseconds 🔒
date_get_minutes 🔒
date_get_month 🔒
date_get_seconds 🔒
date_get_time 🔒
date_get_timezone_offset 🔒
date_get_year 🔒
setFullYear(y, mo?, d?)。省略された引数は現在値を引き継ぐ(仕様どおり)。 Date.prototype.getYear()(Annex B.2.4。getFullYear() - 1900 を返す 2桁年時代の遺産)が丸ごと未対応だった。
date_ms 🔒
date_now_static 🔒
date_parse_static 🔒
date_set_date 🔒
date_set_full_year 🔒
date_set_hours 🔒
date_set_milliseconds 🔒
date_set_minutes 🔒
date_set_month 🔒
date_set_seconds 🔒
date_set_time 🔒
date_set_year 🔒
Date.prototype.setYear(y)(Annex B.2.5)。0 <= y <= 99 なら 1900+y をフルイヤーとして設定し、それ以外は y をそのままフルイヤーとして使う (仕様どおりの奇妙な後方互換ロジック)。
date_to_date_string 🔒
toDateString/toLocaleDateString(日付部分のみ)。以前は toString と同じ フル ISO 日時文字列を返しており、new Date(0).toDateString() に時刻部分が 混入していた(toTimeString 側は逆に日付部分が混入していた)。
date_to_iso_string 🔒
date_to_locale_date_string 🔒
date_to_locale_string 🔒
date_to_locale_time_string 🔒
date_to_string 🔒
date_to_time_string 🔒
toTimeString/toLocaleTimeString(時刻部分のみ)。
date_utc_static 🔒
Date.UTC(year, month?, day?, hours?, minutes?, seconds?, ms?)new Date(...) の多引数コンストラクタと同じ成分だが、Date インスタンスではなく epoch ミリ秒の 数値を直接返す静的ファクトリ(Date.now/Date.parse と3つ揃いのはずが1つ 欠けていた)。省略された引数の既定値は仕様どおり year/month 以外は0、 day のみ1。
date_value_ms 🔒
ValueDate インスタンス想定)から epoch ミリ秒を取り出す。date_ms は このファイル内 private のため、interp.rs から呼べる薄いラッパー。
date_write_ms 🔒
days_from_civil 🔒
(年,月,日) → 1970-01-01 からの経過日数。上記の逆変換(同じ Howard Hinnant アルゴリズム)。
decompose_ms 🔒
epoch ミリ秒 → (年,月,日,時,分,秒,ミリ秒,曜日[0=日曜]) の UTC 分解。
epoch_ms_now 🔒
format_iso 🔒
format_locale_date 🔒
toLocaleDateString/.toLocaleTimeString/.toLocaleStringが丸ごと intl_datetime_format_format(実体はval.to_js_string()、つまり toISOString()相当のISO文字列をそのまま返すだけのスタブ)へ委譲 されており、日付のみ/時刻のみ/日時両方という3種の呼び分けが一切 無かったバグ(toLocaleDateString()"2024-01-15T00:00:00.000Z"を 返し、本来の"2024-01-15"にならない等)。本格的なCLDRロケール データベースは無いため、en-USをはじめとする最も一般的な数値のみの 書式(YYYY-MM-DD/HH:MM:SS)に限定した簡略実装とする(曜日名・ 月名等のロケール依存文字列出力、options引数によるフォーマット カスタマイズは非対応のまま)。2026-07-18 発見・実装。
format_locale_time 🔒
input_date_ms_to_value 🔒
上記の逆変換: Date オブジェクトの epoch ミリ秒を type に応じた value 属性文字列(dateYYYY-MM-DDmonthYYYY-MM)へ整形する。
input_value_as_date_ms 🔒
input.valueAsDate(HTML5。type="date"/"month".value 文字列を Date オブジェクトとして読み書きする IDL 属性。丸ごと未対応だった。仕様上は week にも適用されるが、ISO 週番号⇄暦日の変換は本キャンペーンの規模を超える ため対象外とする簡略方針(date/month 以外は常に nullvalueAsNumber が対象外の typeNaN を返すのと異なり、valueAsDate は仕様どおり null を返す)。interp.rs の DOM プロパティ get/set から呼ぶ。
parse_date_string 🔒
ISO 8601(parse_iso_date)を先に試し、失敗すれば RFC 2822 形式 (parse_rfc2822_date)にフォールバックする。Date コンストラクタ/Date.parse 双方の単一文字列引数はこれを使う。
parse_hh_mm 🔒
ISO 8601 のサブセット(YYYY-MM-DD/YYYY-MM-DDTHH:mm:ss[.sss][Z|±HH:mm] 等)を解析して epoch ミリ秒を返す。Date コンストラクタ/Date.parse の「日時文字列パースは非対応」 だった大きな既知の限界を、最も一般的な ISO 8601 形式に限定して解消する (RFC 2822 形式は parse_rfc2822_date/parse_date_string が別途対応。それ以外の 実装依存フォーマット("Jan 1, 2024" 等)は非対応のまま)。
parse_iso_date 🔒
parse_rfc2822_date 🔒
RFC 2822(HTTP日付ヘッダ等でよく使われる "Mon, 25 Dec 2023 00:00:00 GMT" 形式)の 日時文字列を解析する。Date/Date.parse は ISO 8601 サブセットのみ対応で、この形式は 丸ごと非対応のままだった(parse_iso_date の doc コメントにも既知の制約として 明記されていた)。曜日名は任意(あれば読み飛ばすだけ)。タイムゾーンは GMT/UT/Z(0オフセット扱い)または +HHMM/-HHMM のみ対応 (EST/PST 等の略称は非対応で0オフセット扱いにフォールバック)。
parse_tz_offset_hhmm 🔒
タイムゾーンオフセットの ±HH:mm/±HHmm/±HH いずれの表記も解釈する。 以前は parse_hh_mm(コロン必須)をそのまま流用しており、コロン無し4桁形式 (+0900 等。ISO 8601/ECMA-262 Date Time String 双方で正当な表記)を 「時=900・分=0」と誤読し、実際のオフセットの60倍という壊れた値になる 静かなバグだった("2024-01-01T00:00:00+0900" が丸ごと不正な日時にずれる)。