質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

766閲覧

タイムゾーンによってビューの表示時間を変換させたい。

punchan36

総合スコア105

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/12/22 05:45

前提・実現したいこと

以下の2つの機能について、海外にいるユーザーも各々のタイムゾーンに応じて時間が表示されるようにしたいです。

  1. メッセージ機能における、送信日時の表示(created_atupdated_atに関して)。
  2. ユーザーがイベント日時を作成出来る機能があり、その日時の表示(time型等に関して)。

1に関してはapplication.rbで以下の様に定義していますので、ローカル環境では日本時間で表示されています。しかし海外のユーザーにはどの様に表示されるのかが分からず、そこを対策したいです。

application.rb

rails

1module Hoge 2 class Application < Rails::Application 3 config.time_zone = 'Asia/Tokyo' 4 end 5end

room_show.html.erb

rails

1 <% @another_entries.each do |e| %> <!-- 各メッセージルームの情報を一つずつ取得。--> 2 <div class="message-datetime"> 3 <% message_time = Message.find_by(id: e.room.message_ids.last).try(:updated_at) %> <!-- 最新メッセージの日付。--> 4 <div class="message-date"><%= message_time&.strftime("%Y.%m.%d") %></div> <!-- 最新メッセージの日付。--> 5 <div class="message-time"><%= message_time&.strftime("%H:%M") %></div> <!-- 最新メッセージの時間。--> 6 </div> 7 <% end %>

2に関してはtime型やdatetime型等を使っており、こちらも海外だとどのような表示になるのか気になります。もし日本で作成した日付がそのまま表示されてしまうのであれば、タイムゾーンに応じて変換させるよう対策をしたいです。

post_show.html.erb

rails

1 <%= @post.date.strftime("%b %d (%a), %Y") %> <!-- イベントの日付。--> 2 <%= @post.time.strftime("%I:%M%p") %>- <!-- イベント開始時間。--> 3 <%= @post.closing_time.strftime("%I:%M%p") %> <!-- イベント終了時間。-->

補足情報(FW/ツールのバージョンなど)

ruby 2.6.4p104
RubyGems 3.0.3
Rails 5.2.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

time_zone_options_for_select を使用する事で解決致しました。
参考:Rails アプリの国際化の実装と考察

投稿2022/04/16 13:50

punchan36

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

このためには 3+α が必要です。

  1. どのタイムゾーンで表示するのか、 をどう決めるか
  2. そのタイムゾーンは UTC に対し ±何時間ずれているのかをどう知るか
  3. その±時間での表示

α. 年月日の表示フォーム

1.はあなたが決めてください
2.はググればどっかに載ってるでしょうからそれを使ってください
3.は time.localtime("+09:00") の様にすればOKです
α ですが、年月日も表示するとすると、その表示形式は国によって異なります。
8/9/10 とした時に 日本でしたら 2008年9月10日ですが、2010年9月8日のところもあります。
これは I18n で年月日表示を行えば解決しますが、その場合タイムゾーンとI18n国表記の対応表が必要ですね。

投稿2020/12/30 00:41

winterboum

総合スコア23401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

punchan36

2020/12/30 02:43

有難うございます! 申し訳ありません、説明の仕方が悪かったです。 「特定の地域にいる限定されたユーザー」の時間表示などではなく、「世界中のユーザーがサービスを利用した際に、各々表示される時間」についての質問でございました。 ですので1番に関しては、ありとあらゆるタイムゾーンにいるランダムなユーザーが対象となります。 上手い事現地時間に変換してくれる様なツールなどご存じないでしょうか…?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問