#概要
チャット機能にチャットを送った日付と時刻を表示したいと思い調べてわかった事を以下にまとめます。
初学者故,至らぬところがあるかと思いますので,訂正がある場合は教えていただけると幸いです。
##環境
ruby 2.6.3
Rails 6.0.3
##結論:strftime("%Y-%m-%d %H:%M")を利用すれば解決。
strftimeメソッドは日時データを編集して文字列に変換するメソッドです。
実際に使っていきましょう!
###その前に
create_atの時刻はUTFが基準になっているので日本時刻に合わせていない方はconfig/application.rb内にconfig.time_zone = 'Tokyo'
を追加すればOKです。サーバの再起動は忘れずに。
require_relative 'boot'
require 'rails/all'
module SampleApp
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.0
# Settings in config/environments/* take precedence over those specified here.
# Application configuration can go into files in config/initializers
# -- all .rb files in that directory are automatically loaded after loading
# the framework and any gems in your application.
config.time_zone = 'Tokyo' #<--ここに追加!
end
end
###strftime("%Y-%m-%d %H:%M")を使ってみる。
チャット用テーブルをpostsテーブルとしているので利用するインスタンスは@post
とします。
以下のように記述することで綺麗に書くことができます。
@post.created_at
#2021-05-27 11:02:16 +0900と表示される
@post.created_at.strftime("%Y-%m-%d %H:%M")
#2021-05-27 11:02と表示される
###%Y-%m-%d %H:%Mとはなんなのか?
実は%Y,%mなどは個別に与えられた意味があります。以下に記しておきます。
(参考URL:https://docs.ruby-lang.org/ja/latest/method/Time/i/strftime.html)
%Y:西暦を表す
%m:月を表す数字(01-12)
%d:日(01-31)
%H:24時間制の時(00-23)
%M:分(00-59)
したがって上記のコードを訳すとするなら
@post.created_at.strftime("%Y-%m-%d %H:%M")
#@postのcreated_atの情報のうち%Y,%m,%d,%H,%Mを抜き出し
#表示の仕方は%Y-%m-%d %H:%M すなわち 2021-05-27 11:02 と,しなさい。
ということになりますでしょうか。西暦がいらねーよな方は以下のように書けば良いでしょう。
@post.created_at.strftime("%m-%d %H:%M") #%Y- を消した
#05-27 11:02と表示される。
##まとめ
strftimeメソッドを利用することで,自分の実現したいページの作成に一歩近づけるかと思います。
この記事が誰かの役に立ってくれたら嬉しいです。