タイムスタンプとして、ゼロフィル(ゼロパディング、ゼロ埋め)した日時の文字列が必要なケースで使うJavaScriptコードを作成してみました。
ECMAScript2017版
IEだと動作しません。
コード
const getDateStr = () => {
const now = new Date();
return [now.getFullYear(),
now.getMonth() + 1,
now.getDate(),
now.getHours(),
now.getMinutes(),
now.getSeconds()]
.map(d => d.toString().padStart(2,'0'))
.join('');
};
getDateStr(); // 20180102030405
解説
- 日付の各項目(年月日時分秒)を配列に格納する
- 各要素をpadStart関数で2文字なければ0で埋める
- 配列を連結する
IE対応版
IEでも利用できて、すでにゼロフィルされた文字列を使う方法。
タイムゾーンはUTCになるので注意。
コード
var getDateStr = function(){
var now = (new Date()).toISOString();
var nowArray = now.match(/\d{2,4}/g);
nowArray.pop();
return nowArray.join('');
};
getDateStr(); // 20180102030405
解説
- 日付のISO形式の文字列を取得する(
YYYY-MM-DDTHH:mm:ss.sssZ
) - 数字2〜4桁にマッチする部分を抽出して配列にする
- 配列からミリ秒の部分を削除(今回のケース)
- 配列を連結する
おまけ
ミリ秒つけるならもっとシンプルになります。
var dateStr = (new Date()).toISOString().match(/\d{2,4}/g).join('');
console.log(dateStr); // 20180102030405123