Angularを使っていてWebpackでのbundle.jsが肥大化したときにmoment.jsをやめたいときのメモ
可能な限りDateとimport { DatePipe } from '@angular/common';
を使う
date -> string
moment
moment(date).format('YYYY-MM-DD HH:mm:ss.SSS');
TypeScript + DatePipe
this.datePipe.transform(date, 'yyyy-MM-dd HH:mm:ss.SSS');
※書式設定の仕方が違うので注意!
String -> toLocalString
moment
moment(dateString).toDate().toLocaleString();
TypeScript + DatePipe
this.datePipe.transform(dateString);
String -> Date
Dateを使う
Date.parse('2018-1-10 01:00:00.111'); Date.parse('2018-01-10T01:00:00.111'); new Date('2018-1-10 01:00:00.111'); new Date('2018-01-10T01:00:00.111');
時間差
moment
const diffFrame = moment(toDate).diff(moment(fromDate)) / 100;
Date
const diffFrame = (Date.parse(toDate) - Date.parse(fromDate)) / 100;
日付加算(ミリ秒)
moment
addedDate = moment(date).add(1000, 'milliseconds').toDate().toLocaleString();
Date
addedDate = this.datePipe.transform(Date.parse(date) + 1000);
ISOString
moment
moment(date).toISOString();
Date
new Date(date).toISOString()
経過時間
msから経過時間のhh:mm:ssを作るようなとき moment.durationだけはどうにもならない →自前実装するしかない
追記
date_fns
を使うのもありかも