【コピペOK】JavaScriptの汎用メソッド「formatDate」全コード掲載!日付フォーマットなんて簡単です

JavaScript

いわゆる「formatDate」はJavaScriptのDateオブジェクトを指定したいフォーマットに変換する際に非常に便利な汎用コードです。JavaScript標準の関数ではなく、自前で宣言し実行する流れとなります。

たとえばYYYYMMDD形式であれば、引数にDateオブジェクトと一緒に渡してあげると、Dateオブジェクトが自動的にYYYYMMDDの日付に変換されて返してくれるといった優れものです。

是非、1サイトに1こ実装しておくことをおすすめします。コードの難易度もかなり低いので、まるまるコピペでも問題なく動作することでしょう。

formatDate全文掲載

function formatDate (date, format) {
  format = format.replace(/yyyy/g, date.getFullYear());
  format = format.replace(/MM/g, ('0' + (date.getMonth() + 1)).slice(-2));
  format = format.replace(/dd/g, ('0' + date.getDate()).slice(-2));
  format = format.replace(/HH/g, ('0' + date.getHours()).slice(-2));
  format = format.replace(/mm/g, ('0' + date.getMinutes()).slice(-2));
  format = format.replace(/ss/g, ('0' + date.getSeconds()).slice(-2));
  format = format.replace(/SSS/g, ('00' + date.getMilliseconds()).slice(-3));
  return format;
};

仕組みは実に簡単で、Dateオブジェクトの年、月、日などをreplace()で置換しているだけです。

利用する際は上記のコードをまるまるコピーして、ご自身のjsファイル等に張り付けてください。使い方は下記のようにformatDateメソッドを呼び出してあげるだけでOKです。

// 2022年7月21日2時7分32秒8ミリ秒
var sampleDate = new Date(2022, 6, 21, 2, 7, 32, 8);

console.log(formatDate(sampleDate, 'yyyyMMdd'));

使用上の注意

実は、Dateオブジェクトを宣言する際に違和感があったの分かりましたかね??

var sampleDate = new Date(2022, 6, 21, 2, 7, 32, 8);

7月21日を指定しているんですが、上記ソースでは「2022, 6, 21」になっているんですね。

実は「月」に関してはDate指定する際にその月マイナス1を指定してあげる必要があります。これは、formatDateメソッド内にある、date.getMonth()の仕様によるもので止む無しなのです。date.getMonth()は、1月は0月、2月は1月、といったように1月(つき)ズレる性質があります。

このズレがなぜ起こるのかの理由ですが、諸説あり、「時、分、秒」などは「0」から始まるため、ゼロに合わせたというものや、そもそも英語で「月」の表記は「January」「February」なので数字に置き換える感覚がなかったため、「0から11」で月を表現したなどの理由があるようです。ですが、最も有力だろうと思われるのはBrendan Eich氏というJavaScriptの作成者が「JS’s Date is a copy of Java’s JDK1.0 (1995) java.util.Date. Made it look like Java…」とツイートしていることから、Javaのutil.Dateと同様の仕様を採用したことが挙げられます。

いずれにせよ、getMonth()は0から11の数字が返ってくることにご注意くださいね。

formatDateの使用方法

// 2022年7月21日2時7分32秒8ミリ秒
var sampleDate = new Date(2022, 6, 21, 2, 7, 32, 8);

console.log(formatDate(sampleDate, 'yyyyMMdd'));
console.log(formatDate(sampleDate, 'yyyyMMdd'));
console.log(formatDate(sampleDate, 'yyyyMMddHHmmssSSS'));
console.log(formatDate(sampleDate, 'yyyy/MM/dd'));
console.log(formatDate(sampleDate, 'yyyy-MM-dd'));
console.log(formatDate(sampleDate, 'HH:mm'));
console.log(formatDate(sampleDate, 'HH:mm:ss:SSS'));

まず、Dateオブジェクトを作成します。

formatDate()の第一引数に作成したDateオブジェクトを、第二引数にフォーマット型を入れます。それぞれ実行すると、フォーマット型に準じた日付の形になって返ってきます。

難しいことはありませんね。ライセンスも何もないのでどんどん使ってOKですので積極的に取り入れてみましょう。

タイトルとURLをコピーしました