来月 22 日 のような表現を date-fns で対応するメモです。
処理の流れ
このような流れで来月 22 日を実現しています。
- startOfMonth で今月の初日に戻す
- addMonths で来月にする
- addDays で 1 日からなので 21 日進めて 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