要点
- データベースにデータを作成した日時をそのままWebページに表示させたい
- 初期で保存されているデータをそのまま使うと日付だけでなく、時間まで表示されてしまう
- 日付のフォーマットを変換し、表示させた
背景
勉強のためにRuby on Rails5を使い、Webアプリケーション(Todoアプリもどき)を作成中です。
下記のようにやりたいことはほとんど同じだと思われるが、SQLやLaravelなどの別言語での解説が多く、苦戦したため忘れないようにメモとして残しております。
SQliteでの日付時刻を扱う際のポイント→https://qiita.com/TomK/items/132831ab45e2aba822a8
Laravelでデータベースのcreated_atから日付だけ取り出す→https://qiita.com/N0S0/items/d656dbd1b83f4ed8e3d6
対処方法
- DateTimeクラスにあるstrftimeメソッドを使用することで簡単に表示させることができました。
- 参考にさせていただいたサイト→https://magazine.techacademy.jp/magazine/18707
実際のコード
require "date"
<% @tasks.each do|task| %>
<% date = task.created_at %>
<%= date.strftime("%Y-%m-%d") %>
<% end %>
2023-02-06
まとめ
参考サイトではDataクラスで取得したデータを指定のフォーマットで表示するメソッドとしてstrftimeというメソッドが紹介されていました。今回はデータベースに保存されていた時刻をそのままDateクラスで取得したデータと仮定して、試してみたら参考サイト通りに表示させることができました。
クラスとして取得したデータではないが、保存されているデータがDateクラスと同じ形式の保存だったからできたのか、そもそもDateクラスとしてSQlite3に保存されているというものなのかはよくわかってないです。
いまいち理解できていなくても何となく試してみたらうまくいった、というパターンは案外多いためあきらめずに色々やってみようと思います。