0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

javascriptでyyyy/mm/ddゴルフ

Posted at

概要

javascriptでyyyy/mm/dd。
年月日の各要素を別で取ってきて整形してガッチャンコしたり、toLocaleDateString()を呼んで分割してゼロ埋めしてまたくっ付けたりといったのがよくあるやり方だけれど、どうにも野暮ったいというかもっと短く書けんものかねと常々思っていた。
そこで業務中の暇にあかせて、じゃあどれだけ短く書けるんだという一人コードゴルフ大会を障害対応に追われる同僚を横目に敢行。

以下で動作確認済
●Microsoft Edge ver:124.0.2478.80
●Google Chrome ver:124.0.6367.119

結論

ワシの中での暫定キング

const date = new Date().toLocaleString(NaN, {dateStyle:'short'});
console.log(date);
// ワンライナー
console.log(new Date().toLocaleString(NaN,{dateStyle:'short'}));
// 64bytes! shortをmediumとしても結果は同じになるようだ
// 本当ならちゃんとロケールに'JP'を指定してやる必要あるかな

試行錯誤

当初の戦略はtoLocaleDateString()を使ってのアプローチだった。
このメソッドはスラッシュ区切りの年月日を良い感じに返してくれるものだが、パディングされてないのがやや不満。

const date2 = new Date().toLocaleDateString().split('/').map(i=>i<10?'0'+i:i).join('/');
console.log(date2);
// padStartを使った方が可読性的には優か

その後、そういえば引数にフォーマットとか指定できたっけと思い出し色々調べる。

const options = {year:'numeric', month:'2-digit', day:'2-digit'};
const date3 = new Date().toLocaleDateString('ja-JP', options);
console.log(date3);

寄り道しつつ……

const date4 = new Date().toLocaleDateString('SV').replaceAll('-', '/');
console.log(date4);

結論に至ったのである。

最後に

挑戦者募集、もっと短く書けるという者あれば。
フォーマットについては暇なときにもっと調べてみたい、"R6/5/5"みたいに元号返せるとか初めて知ったわ

console.log(new Date().toLocaleDateString("ja-JP-u-ca-japanese"));// R6/5/5

しかしDate周りのメソッドはややこしいのが多い……

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?