0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScript 日時フォーマッタ

Last updated at Posted at 2022-09-05

日付操作系の大がかりなライブラリ等を導入するまでもないようなケースで扱いやすいよう、必要最低限の機能をコピペで簡単に利用できそうなサイズを意識して組んでみました。

dateFormat.js
const dateFormat = (format, date = Date.now()) => {
  const d = new Date(date);
  d.setMinutes(d.getMinutes() - d.getTimezoneOffset());

  const r = {};
  d.toJSON().match(/\d+/g).forEach((v, i) => r[['YYYY', 'MM', 'DD', 'hh', 'mm', 'ss', 'ms'][i]] = v);
  [...'MDhms'].forEach(k => r[k] = +r[k + k]);
  r.YY = r.YYYY.slice(-2);
  r.hh12 = `0${r.h12 = (+r.h + 11) % 12 + 1}`.slice(-2);
  r.ap = (r.AP = r.h < 12 ? 'AM' : 'PM').toLowerCase();
  r.apj = r.h < 12 ? '午前' : '午後';
  r.w = d.getUTCDay();
  r.wj = '日月火水木金土'[r.w];
  r.wes = (r.we = `${['Sun', 'Mon', 'Tues', 'Wednes', 'Thurs', 'Fri', 'Satur'][r.w]}day`).slice(0, 3);
  r.mes = (r.me = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][r.M - 1]).slice(0, 3);

  return format.replace(/%(\w+)%/g, (a, b) => r[b] ?? a);
};

書式

dateFormat(フォーマット文字列 [,dateオブジェクト])

引数

  • フォーマット文字列

以下のフォーマット文字が使用できます。

%YYYY% 年 西暦4桁
%YY% 年 西暦下2桁

0パディングあり
%MM% 月: 01~12
%DD% 日: 01~31
%hh% 時: 00~23
%hh12% 時: 01~12
%mm% 分: 00~59
%ss% 秒: 00~59

0パディングなし
%M% 月: 1~12
%D% 日: 1~31
%h% 時: 0~23
%h12% 時: 1~12
%m% 分: 0~59
%s% 秒: 0~59

%ms% ミリ秒: 000~999
%AP% AM/PM
%ap% am/pm
%apj% 午前/午後
%w% 曜日: 0(日)~6(土)
%wj% 曜日 日本語: 日~土
%we% 曜日 英語: Sunday~Saturday
%wes% 曜日 英語3文字: Sun~Sat
%me% 月 英語: January~December
%mes% 月 英語3文字: Jan~Dec

  • dateオブジェクト

Dateオブジェクト、またはDate()コンストラクターが解釈できる日時文字列やUNIXエポックからのミリ秒が渡せます。
省略した場合は実行時の日時になります。

example

console.log( dateFormat('本日は%M%月%D%日 %wj%曜日です') ); // 本日は9月5日 月曜日です
console.log( dateFormat('%YYYY%-%MM%-%DD% %hh%:%mm%:%ss%') ); // 2022-09-05 14:04:50
console.log( dateFormat('%YYYY%年%M%月%D%日 %apj%%h12%時%m%分', '2000-01-02 15:04:00') ); // 2000年1月2日 午後3時4分

日付フォーマッタ系の過去の投稿記事

JavaScript Dateオブジェクトに書式指定メソッドを追加
PHPのdate()やmktime()をjavascriptでも使いたい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?