【JavaScript】日時のフォマート(moment-timezone)

javascript Javascript

概要

日時を表現する方法のなかで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
タイトルとURLをコピーしました