概要
日時を表現する方法のなかでmoment-timezone(moment)を用いての方法に付い例をあげて置いてみたいと思います。
moment-timezoneとは
moment
は日付と時刻を解析、検証、操作、フォーマットするために広く使用されていますが、moment-timezone
はその機能にタイムゾーンのサポートを追加されました。
使い方
ここではJavaScriptでの使い方を記述しますがTypeScriptでの書き方にも一部挙げて見たいと思います。
利用準備
モジュールのインストール
npmやyarnなどを利用してインストールが必要です
npm install moment-timezone
// or
yarn add moment-timezone
モジュールの読み込み
CommonJS形式による
const moment = require('moment-timezone');
ECMAScript形式
import moment from 'moment-timezone';
or
import * as moment from 'moment-tomezone';
日時を出力
console.log(' デフォルト : ', moment().format());
console.log(' 年 : ', moment().format('Y'));
console.log(' 月 : ', moment().format('M'));
console.log(' 日 : ', moment().format('D'));
console.log(' 年月日 : ', moment().format('YYYYMMDD'));
console.log(' "/"区分月年月日 : ', moment().format('YYYY/MM/DD'));
console.log(' "-"区分月年月日 : ', moment().format('YYYY-MM-DD'));
console.log(' 時 : ', moment().format('h'));
console.log(' 分 : ', moment().format('m'));
console.log(' 秒 : ', moment().format('s'));
console.log(' ミリ秒 : ', moment().format('SSS'));
console.log(' 時分秒 : ', moment().format('HHmmss'));
console.log(' 時分秒 : ', moment().format('HHmmss'));
console.log(' ":"区分時分秒 : ', moment().format('HH:mm:ss'));
console.log(' "-"区分時分秒 : ', moment().format('HH-mm-ss'));
// 結果
デフォルト : 2024-01-30T11:51:53+09:00
年 : 2024
月 : 1
日 : 30
年月日 : 20240130
"/"区分月年月日 : 2024/01/30
"-"区分月年月日 : 2024-01-30
時 : 11
分 : 51
秒 : 53
ミリ秒 : 276
時分秒 : 115153
時分秒 : 115153
":"区分時分秒 : 11:51:53
"-"区分時分秒 : 11-51-53
関数にしてみる
function getDateTimeFormat(dt, format) {
return moment(dt).format(format);
}
関数の利用
const arg = new Date();
console.log(getDateTimeFormat(arg, 'YYYY/MM/DD'));
console.log(getDateTimeFormat(arg, 'YYYY/MM/DD HH:mm:ss'));
console.log(getDateTimeFormat(arg, 'HH:mm'));
// 結果
2024/01/30
2024/01/30 11:51:53
11:51
UTCタイムで取得関数
function getUtcDateTimeFormat(dt, format, timezone) {
return moment(dt).tz(timezone).format(format);
}
UTCタイム取得関数の利用
console.log(getUtcDateTimeFormat(arg, 'YYYY/MM/DD', 'utc'));
console.log(getUtcDateTimeFormat(arg, 'YYYY/MM/DD HH:mm:ss', 'utc'));
console.log(getUtcDateTimeFormat(arg, 'HH:mm', 'asia/tokyo'));
// 結果
2024/01/30
2024/01/30 02:51:53
11:51
プロジェクトに使えそうな関数に
function getDateTimeFormat(dt, format, timezone) {
if (timezone) {
return moment(dt).tz(timezone).format(format);
} else {
return moment(dt).format(format);
}
}
利用例
console.log(getDateTimeFormat(arg, 'YYYY/MM/DD HH:mm:ss.SSS'));
console.log(getDateTimeFormat(arg, 'YYYY/MM/DD HH:mm:ss.SSS', 'Asia/Tokyo'));
console.log(getDateTimeFormat(arg, 'YYYY/MM/DD HH:mm:ss.SSS', 'America/New_York'));
// 結果
2024/01/30 11:51:53.277
2024/01/30 11:51:53.277
2024/01/29 21:51:53.277