Vous pouvez utiliser la colonne de table created_at
pour récupérer la date et l'heure de création des données.
Cependant, il est difficile de l'utiliser tel quel.
Cette fois, j'aimerais pouvoir le récupérer avec une notation telle que «2020/7/21 9: 05: 50».
Tout d'abord, extrayons le created_at
des données de la table @ post`` @ post
tel quel.
erb:posts/show.html.erb
<p>un événement: <%= @post.event %></p>
<p>endroit: <%= @post.place %></p>
<p>Date et heure de création: <%= @post.created_at %></p>
place | event | created_at |
---|---|---|
Tokyo | Feu d'artifice | 2020-07-21 00:05:50 UTC |
Vous pouvez voir que c'est très différent de la notation cible 2020/7/21 9: 05: 50
.
Plus précisément, les trois points suivants sont différents.
Je voudrais le corriger dans l’ordre.
Puisque la programmation est utilisée partout dans le monde, elle sera sortie en "heure standard mondiale" telle quelle. Par conséquent, changeons-le en "heure du Japon".
config/application.rb
class Application < Rails::Application
# *****Ajoutez la ligne suivante*****
config.time_zone = "Asia/Tokyo"
end
En insérant cette seule ligne, il était possible de changer «heure standard mondiale» en «heure du Japon» comme indiqué ci-dessous.
place | event | created_at |
---|---|---|
Tokyo | Feu d'artifice | 2020-07-21 09:05:50 +0900 |
Il y a un «+ 0900», ce qui signifie que le décalage horaire entre l'heure du Japon et l'heure normale du monde est de +9 heures.
C'est l'heure du Japon, mais il est difficile de comprendre si le format est «2020-07-21 09:05:50 + 0900». Changeons cela.
Tout d'abord, installez le gem pour plusieurs langues et définissez-le sur japonais.
Gemfile
#Pour Rails6
gem 'rails-i18n', '~> 6.0'
#Pour Rails5
gem 'rails-i18n', '~> 5.1'
Terminal
bundle install
config/application.rb
class Application < Rails::Application
#Abréviation
config.time_zone = "Asia/Tokyo"
# *****Ajoutez la ligne suivante*****
config.i18n.default_locale = :ja
end
Ensuite, utilisez la méthode «l» fournie par «rails-i18n».
erb:posts/show.html.erb
<p>un événement: <%= @post.event %></p>
<p>endroit: <%= @post.place %></p>
<!-- *****ajouter l***** -->
<p>Date et heure de création: <%= l @post.created_at %></p>
De plus, créez un fichier appelé config / locales / ja.yml et définissez le format.
config/locales/ja.yml
ja:
time:
formats:
default: "%Y/%m/%d %H:%M:%S"
En conséquence, la notation change comme suit et +0900 disparaît également.
place | event | created_at |
---|---|---|
Tokyo | Feu d'artifice | 2020/07/21 09:05:50 |
Le format peut être changé librement, par exemple, si vous n'avez pas besoin de secondes
, vous pouvez omettre:% S
.
config/locales/ja.yml
default: "%Y/%m/%d %H:%M"
place | event | created_at |
---|---|---|
Tokyo | Feu d'artifice | 2020/07/21 09:05 |
Symbole | Signification |
---|---|
% Y | Année |
% m | mois (MOIS) |
% d | JOUR |
% H | HEURE |
% M | minutes (MINUTE) |
% S | secondes (SECOND) |
[Page de référence] Manuel de référence de Ruby 2.7.0 (strftime)
Par exemple, il n'est pas naturel que «juillet» soit écrit «07», supprimons donc «0».
config/locales/ja.yml
ja:
time:
formats:
# ***** %Derrière-Ajouter*****
default: "%Y/%-m/%-d %-H:%M:%S"
place | event | created_at |
---|---|---|
Tokyo | Feu d'artifice | 2020/7/21 9:05:50 |
En insérant «-», nous avons pu éliminer «0 padding» comme décrit ci-dessus.