JavaScriptでカジュアルに日付操作する
JavaScriptTypeScript
2020年03月21日
JSでちょっとしたDate操作をしたのでメモ。
YYYYMMDD文字列を取得
toISOString() メソッドは、簡潔な拡張表記の ISO 形式 (ISO 8601) の文字列を返します。これは、常に 24 文字または 27 文字の長さになります (それぞれ、YYYY-MM-DDTHH:mm:ss.sssZ または ±YYYYYY-MM-DDTHH:mm:ss.sssZ)。タイムゾーンは常に 0 UTC オフセットになり、接尾辞 "Z" で表記されます。
const date = new Date()
date.toISOString().split('T')[0] // 2020-03-04
date.toISOString().split('T')[0].replace(/-/g, '') // 20200304
日付の操作
1日足す
const date = new Date()
date.setDate(date.getDate() + 1)
new Date(date)
もしくはgetTime
メソッドで
1970 年 1 月 1 日 00:00:00 UTC から指定した日時までの経過時間をミリ秒で表した数値。
を取得できるので普通に足し算すればいいです。
const date = new Date()
date.getTime() // 1584792437135
const date = new Date()
const tomorrow = new Date(date.getTime() + 1000 * 60 * 60 * 24)
1ヶ月足す
const date = new Date()
date.setMonth(date.getMonth() + 1)
new Date(date)
フォーマット
const date = new Date()
const formatString = 'YYYY年MM月DD日 HH時mm分'
formatString
.replace('YYYY', date.getFullYear())
.replace('MM', date.getMonth() + 1)
.replace('DD', date.getDay() + 1)
.replace('HH', date.getHours())
.replace('mm', date.getMinutes())
日付作成
指定期間のdateの配列を作成する。
const createDays = (since, until) => {
const results = [since];
while (results[results.length - 1] !== until) {
const date = new Date(results[results.length - 1]);
const next = date.setDate(date.getDate() + 1);
const ymd = new Date(next).toISOString().split('T')[0];
results.push(ymd);
}
return results;
};
createDays('2020-04-01', '2020-05-31')
// ["2020-04-01", "2020-04-02", "2020-04-03", "2020-04-04"... "2020-05-30", "2020-05-31"]
時間作成
const createTimes = (from, to, interval) => {
let results = [from];
while (results[results.length - 1] !== to) {
const [hh, mm] = results[results.length - 1].split(':');
const date = new Date(
1000 * 60 * (60 * Number(hh) + Number(mm) + interval)
);
const hhmm = date
.toISOString()
.split('T')[1]
.slice(0, 5);
results.push(hhmm);
}
return results;
};
createTimes('10:00', '12:30', 10)
// ["10:00", "10:10", "10:20", "10:30", "10:40", "10:50", "11:00", "11:10", "11:20", "11:30", "11:40", "11:50", "12:00", "12:10", "12:20", "12:30"]
Dateのおさらい
生成
new Date()
new Date('2020-04-01')
new Date(10000)
new Date(1995, 11, 17)
Get
date = new Date('2020-03-21T12:19:04.441Z')
date.getDate() // 21
date.getDay() // 6
date.getFullYear() // 2020
date.getHour() // 21