formatDate / timestampToTime
トークンのパターンで日付を整形します。
API
formatDate(value?, pattern?)
| パラメーター | 説明 | 型 | 既定値 |
|---|---|---|---|
value | タイムスタンプ、日付の文字列、Date。省くと現在時刻 | number | string | Date | 現在時刻 |
pattern | トークンのパターン | string | 'YYYY-MM-DD HH:mm:ss' |
| トークン | 意味 | トークン | 意味 |
|---|---|---|---|
YYYY/YY | 年 | mm/m | 分 |
MM/M | 月(1〜12) | ss/s | 秒 |
DD/D | 日 | SSS | ミリ秒 |
HH/H | 時(0〜23) | A/a | AM/PM・am/pm |
hh/h | 時(1〜12) | [...] | そのまま出す文字 |
入力を解析できないときは 'Invalid Date' を返します。
timestampToTime(timestamp?)
非推奨です。インスタンスに format メソッドを生やした Date を返します。
使用例
js
import { formatDate } from 'ranuts';
formatDate(); // '2026-07-25 14:30:00'
formatDate(1753425000000, 'YYYY/MM/DD'); // '2026/07/25'
formatDate(new Date(), 'YYYY[年]MM[月]DD[日] hh:mm a');
formatDate('not a date'); // 'Invalid Date'補足
- 大文字と小文字は別ものです。
MMは月、mmは分。HHは 24 時間制、hhは 12 時間制です。 - パターンの置換は一度で済ませます。 ですから、書き込んだばかりの値が、あとのトークンにもう一度拾われることはありません。
- そのまま出したい文字は
[]で囲んで、置換の対象から外してください。
0.3 で修正し、置き換えました
以前の整形処理は、大文字小文字を区別しないフラグを付けた .replace() を 6 回つないでいました。結果はふたつ。あとのパターンが、前のパターンが書き込んだばかりの数字を拾ってしまうこと。そして /M+/g と /m+/g と /D+/gi が重なり合うこと。おかげで yyyy-mm-dd のような小文字のパターンは「年-分-日」になっていました。
timestampToTime は非推奨で、formatDate を使ってください。Date のインスタンスにメソッドを生やしても、直列化すれば消えますし、Function より細かい型も付けられません。その format はいま formatDate に委ねているので、既存の呼び出し側も修正後のトークンの扱いを受け取れます。