2010-11-26 9 views
4

複数のタイムゾーンにあるユーザを持つgrailsアプリケーションでタイムゾーンを扱う正しい方法は何ですか?タイムゾーンGrailsの標準アプリケーションには標準がありますか?多分、Railsがマルチタイムゾーンのサポートを扱う方法とは何かがあるでしょうか? http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/複数のタイムゾーンに対応するGrailsアプリケーション

ユーザセッションごとに現在のタイムゾーンを設定する方法はありますか?これは、 "Date"を扱うために使用される異なるタイムゾーンを持つ複数のアクティブなユーザーセッションを持つことができることを意味します。

私はタイムゾーン変換を手動で処理する必要がないようにしようとしています。あなたが彼の設定から、それを推測しようとすることができ、彼がしている時間帯が、それは信頼性がありません - 。

おかげ

答えて

2

まず、多くの場合、選択肢をユーザに提示することをお勧めします。 valueは現在Localeにデフォルト値を属性という

<g:timeZoneSelect name="myTimeZone" /> 

注:Grailsのでは、することにより、ユーザが自分のタイムゾーンを選択させることができます。だから、私はgrailsのデフォルトのlocaleresolverがユーザのロケールを推測するうまい仕事をすると思います。そのために

あなたはUTCでのDB内のすべての回(またはアプリケーション全体のために固定されている別のタイムゾーン)を格納する必要が動作するように

<g:formatDate>主張、それが唯一の3つの属性を持っていますが、それがあるためと思われるの文書少なくともversion 1.2timeZone属性をサポートしています。だからあなたは置く必要がありますtimeZone="${currentUser.timeZone}"

0

JodaTimeとDateTimeクラスを試してみることができます、タイムゾーンが内部にあります。それでも、私はUTСで時間を保存する必要があると信じています。そのためには、UTCを適用するGORMへの独自のマッピング、ユーザーのタイムゾーンを考慮した独自の日付フォーマットtaglibなど、いくつかのものを提供する必要があります。

OTOH、バックグラウンドジョブのようないくつかの共通の機能を持っている場合は、どのタイムゾーンを使用するのですか?

+0

私の経験(javaのデフォルトの日付と時刻を使用)は、 "ベース" /サーバーの日付と時刻として任意のタイムゾーンを使用できることです。一貫していなければならず、grailsが実行されるマシンでは、システム時間にこのタイムゾーンを使用する必要があります。そうしないと、不要な「タイムシフト」が発生します。しかし、私はまた、Javaの日付と時間にいくつかの問題が発生した後、JodaTimeを使用することをお勧めします。 –

関連する問題