Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

【TS】【Ruby】日付をyyyy-mm-ddに変換する方法をざっくりまとめてみた

目次

背景

仕事で日付をyyyy-mm-ddに変換するのをやったときにパッとできなかったので、忘れないように記事にしようと思います。

日付をyyyy-mm-ddに変換する方法

Ruby

まずRubyで日付を生成するには、Dateクラスを使用します。Date.todayで今日の日付を持つDateクラスのインスタンスを生成できます。

require 'date'
today = Date.today

p today # => #<Date: 2022-12-04 ((2459918j,0s,0n),+0s,2299161j)>

この日付をyyyy-mm-ddに変換したい場合、Date#strftimeを使用します。 strftimeには文字列でフォーマットを指定します。フォーマットについて知りたい場合、Date#strftimeには詳しい説明が書いていなかったので、Time#strftimeを見た方が良いです。

require 'date'
today = Date.today.strftime("%Y-%m-%d")

p today # => "2022-12-04"

TS

まずTSで日付を生成するには、Dateオブジェクトを使ってインスタンスを生成します。Dateをnewするときにコンストラクタ引数を何も渡さない場合、作成されるインスタンスは現在の時刻を表すものになります。

const today = new Date();

console.log(today); // => Date: "2022-12-04T23:33:34.966Z" 

getMonth()メソッドは、月を0から11の整数で取得します。そのため、+ 1しています。

// YYYY/MM/DD形式の文字列に変換する関数
const formatDate = (date: Date) => {
  const yyyy = String(date.getFullYear());
   
  // Stringの`padStart`メソッド(ES2017)で2桁になるように0埋めする
  // 既に長さを満たしている場合、0埋めされない
  const mm = String(date.getMonth() + 1).padStart(2, "0");
  const dd = String(date.getDate()).padStart(2, "0");

  return `${yyyy}-${mm}-${dd}`;
}

const today = new Date();
console.log(formatDate(today)); // => "2022-12-05"

参考記事

class Date (Ruby 3.1 リファレンスマニュアル)

Date#strftime (Ruby 3.1 リファレンスマニュアル)

Time#strftime (Ruby 3.1 リファレンスマニュアル)

Date · JavaScript Primer #jsprimer

日付オブジェクト名.getMonth()-JavaScriptリファレンス