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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

2回答

8422閲覧

Railsのタイムゾーンについての疑問。Time.nowだとtime_zoneをTokyoにしても、デフォルト同じ出力になります。

qaz3330

総合スコア113

Ruby

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

2グッド

1クリップ

投稿2016/04/29 06:28

タイムゾーンについて勉強しております。
UTCとJSTでは9時間違うということは理解しております。

また、railsでタイムゾーンを変更する場合は、configの設定を変更すれば出来るとのことでしたので、
変更し、変化を見ておりました。

確かにTime.currentでは変化が見られたのですが、Time.nowだと、変化がないように思います。

Time.nowはタイムゾーンの変更は無視して出力されてるのでしょうか?(質問1)

同様にDateクラスに関しても以下の理解であってますでしょうか?(質問2)

Date.today -> タイムゾーンの変更は無視して現在の日付を取得する
Date.current -> タイムゾーンに基づいた現在の日付を取得する

以前、知人から9時間違うことにより、
日付がずれ問題になったという話を聞き、ちょっと神経質になってます。

基本的にconfigの設定を変更し、Time.currentにすれば安牌なのでしょうか?(質問3)

宜しくお願いします。

デフォルトの出力

Time.current => Fri, 29 Apr 2016 06:14:49 UTC +00:00
pry(main)> Time.now => 2016-04-29 15:17:25 +0900

config.time_zone = 'Tokyo'にした後

Time.current => Fri, 29 Apr 2016 15:18:33 JST +09:00
Time.now => 2016-04-29 15:18:36 +0900
ikuwow, Kimsehwa👍を押しています

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

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

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

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

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

guest

回答2

0

Time.nowはRuby組み込みのメソッドですが、Time.currentはRails独自のメソッドです。まず、その点に注意してください。

RubyのTimeはタイムゾーンが保持されています。そして、Time.nowシステムのタイムゾーンを使うという仕様になっています。しかし、実際にRailsで使うときはシステムのタイムゾーンではまずい場合があります。アメリカに置いているサーバで日本向けのサービスをする場合、タイムゾーンは日本標準時(JST)の方が都合が良いでしょう。そこでRailsではアプリ毎にタイムゾーンを指定して現在時刻を取得できるようにTime.currentを別に用意したのです。そう、Time.currentconfig.time_zoneで設定したタイムゾーンになるという仕様にしたのです。

なお、上の話はDateでも同じ事が言えます。また、Time.currentは厳密にはTimeオブジェクトでは無く、TimeWithZoneです。ほか、細かい違い等については下記記事が参考になると思います。

Qiita: RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い

投稿2016/04/29 07:13

編集2016/04/29 07:14
raccy

総合スコア21735

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

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

0

タイムゾーンの扱いはいろいろ注意が必要です。
参考情報を示します。

投稿2016/04/29 13:49

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問