【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 リファレンスマニュアル)