来月 22 日 のような表現を date-fns で対応するメモ

来月 22 日 のような表現を date-fns で対応するメモです。

処理の流れ

このような流れで来月 22 日を実現しています。

プログラム

const addDays = require('date-fns/addDays');
const addMonths = require('date-fns/addMonths');
const startOfMonth = require('date-fns/startOfMonth');
const parse = require('date-fns/parse');
const format = require('date-fns/format');
 
// UTC の 2022-06-29 取得
let sampleDay = parse('2022-06-29 00:00:00Z', 'yyyy-MM-dd HH:mm:ssX', new Date());
console.log('UTC の 2022-06-29 取得');
console.log(format(sampleDay,'yyyy-MM-dd HH:mm:ss')); // 2022-06-29 09:00:00

// 今月の初日に戻す
console.log('まず今月の初日に戻す');
sampleDay = startOfMonth( sampleDay );
console.log(format(sampleDay,'yyyy-MM-dd HH:mm:ss')); // 2022-06-01 00:00:00

// 来月にする
console.log('来月にする');
sampleDay = addMonths( sampleDay , 1 );
console.log(format(sampleDay,'yyyy-MM-dd HH:mm:ss')); // 2022-07-01 00:00:00

// 22 日にする(1 日からなので 21 日進める)
console.log('22 日にする');
sampleDay = addDays( sampleDay , 22 - 1 );
console.log(format(sampleDay,'yyyy-MM-dd HH:mm:ss')); // 2022-07-22 00:00:00