Skip to content

formatDate / timestampToTime

トークンのパターンで日付を整形します。

API

formatDate(value?, pattern?)

パラメーター説明既定値
valueタイムスタンプ、日付の文字列、Date。省くと現在時刻number | string | Date現在時刻
patternトークンのパターンstring'YYYY-MM-DD HH:mm:ss'
トークン意味トークン意味
YYYY/YYmm/m
MM/M月(1〜12)ss/s
DD/DSSSミリ秒
HH/H時(0〜23)A/aAM/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'

補足

  1. 大文字と小文字は別ものです。 MM は月、mm は分。HH は 24 時間制、hh は 12 時間制です。
  2. パターンの置換は一度で済ませます。 ですから、書き込んだばかりの値が、あとのトークンにもう一度拾われることはありません。
  3. そのまま出したい文字は [] で囲んで、置換の対象から外してください。

0.3 で修正し、置き換えました

以前の整形処理は、大文字小文字を区別しないフラグを付けた .replace() を 6 回つないでいました。結果はふたつ。あとのパターンが、前のパターンが書き込んだばかりの数字を拾ってしまうこと。そして /M+/g/m+/g/D+/gi が重なり合うこと。おかげで yyyy-mm-dd のような小文字のパターンは「年-分-日」になっていました。

timestampToTime は非推奨で、formatDate を使ってください。Date のインスタンスにメソッドを生やしても、直列化すれば消えますし、Function より細かい型も付けられません。その format はいま formatDate に委ねているので、既存の呼び出し側も修正後のトークンの扱いを受け取れます。

MIT ライセンスのもとで公開されています。