5
1

More than 1 year has passed since last update.

【JavaScript】日付は `YYYY/MM/DD hh:mm:ss.iii` の形式で欲しい!のに無いから自作した(のに、、よく調べたらあった

Last updated at Posted at 2022-04-10

日付は YYYY/MM/DD hh:mm:ss.iii の形式で欲しい!のに無いから自作した(のに、、よく調べたらあった

日付のフォーマットは YYYY/MM/DD hh:mm:ss.iii 形式で欲しい!!そう、日本人なので。

ってか、日付フォーマット、多すぎ。そのまえに世界中でバラバラなの、なんとかして。

さらに最近は「ミリ秒」もあたりまえにほしい!

コード(最初の版。追記あり〼)

//-------------------------------------------------------
// 現在の日時を文字列で返す
const  get_formated_time = (
    _fmt = 'YYYY/MM/DD hh:mm:ss.iii',
    _dt  = new Date(),
) => [
        [ 'YYYY', _dt.getFullYear()  ],
        [ 'MM',   _dt.getMonth() + 1 ], // なぜ Java と同じ仕様にしたのか?小一時間問いたい
        [ 'DD',   _dt.getDate()      ],
        [ 'hh',   _dt.getHours()     ],
        [ 'mm',   _dt.getMinutes()   ],
        [ 'ss',   _dt.getSeconds()   ],
        [ 'iii',  _dt.getMilliseconds() ],
    ].reduce(
        (s,a) => s.replace( a[0], `${a[1]}`.padStart(a[0].length,'0') ),
        _fmt
    )

// 使い方

const put = s => document.body.innerText += s + '\n'
// const put = s => console.log( s )

put( get_formated_time() ) // -> 2022/04/10 14:56:21.238

put( get_formated_time( 'MM/DD/YYYY' ) ) // -> 04/10/2022

put( get_formated_time( 'hh-mm-ss' ) ) // -> 14-56-45

put( get_formated_time( 'YYYY/MM/DD hh:mm:ss', new Date( '2000/1/1 12:34:56' ) ) )  // -> 2000/01/01 12:34:56

実行例(Codepen)

See the Pen JavaScript で YYYY/MM/DD hh:flag_mm:ss.iii 日付フォーマット by yamazaki.3104 (@yamazaki3104) on CodePen.

コードの解説

使用している関数の解説は、こちら(手抜き
ってか、必要ないでしょ。

new Date 日付クラス

reduce() 配列の要素を順番に実行

replace() 文字列置換

padStart() ゼロサプレス パディング(ゼロで埋める)

追記: よく調べたら、ありました。毎度お騒がせしております。

追記:上の関数 get_formated_time() を使わなくても、、、、↓Intl.DateTimeFormat()で行けました


const yyyymmdd = new Intl.DateTimeFormat(
  undefined,
  {
    year:   'numeric',
    month:  '2-digit',
    day:    '2-digit',
    hour:   '2-digit',
    minute: '2-digit',
    second: '2-digit',
    fractionalSecondDigits: 3,
  }
)

console.log( yyyymmdd.format( new Date() ) )

それでは引き続き、プログラミングライフをお楽しみください。

5
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1