Qiitaに書いたやつ

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

同じタグの投稿

2020 churabou