2013-02-15 8 views
7

私のサーバーは米国内にあり、 ウェブブラウザを通じてインドのアプリケーションにアクセスしていますが、その場合はTimeZone.getDefault()が返されますか? 返される情報に基づいてインドに基づいてタイムゾーンを返した場合は、TimeZone.getDefault()はどのように動作しますか?

コントロールパネルの設定が異なるロケールに変更されました。 システムの異なるタイムゾーンが の設定に基づいて変更されていなくても変更されました。休閑として、私は、コードを書かれている

...

def dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT,Locale.getDefault()) 
dateFormat.setTimeZone(TimeZone.getDefault()) 
+0

「アプリケーションへのアクセス」とはどういう意味ですか? 'TimeZone.getDefault()'の呼び出しはどこで実行されていますか?あなたのテストですでに何を観察していますか?現時点ではあなたの質問はあまりにも漠然としています。 –

答えて

6

これはJVM TimeZone.getDefault()のタイムゾーンを返します。したがって、アプリケーションがインドのサーバー上で実行されている場合は、「Asia/Calcutta」のようなものになります。

0

これは「このコードが実行される」の問題です。インドのブラウザからアクセスされているWebアプリケーションについて話している場合、取得する日付の種類は米国になります。ユーザーのセッションに適切なロケールとタイムゾーンを設定しない限り、 Vaadinのようなフレームワークでは、アプリケーションでsetLocale()と呼ぶとタイムゾーンも設定しますが、他のプラットフォームでは、特定のタイムゾーンで日付フォーマッタを明示的に使用する必要があります。

+0

'Locale'は通常タイムゾーンを含みません。 –

+0

あなたは正しいと思いますが、私は非常に特殊なケースを念頭に置いていました! – n0rm1e

1

デフォルトのタイムゾーンは、通常、ユーザーまたはアプリケーションではなく、ホストに対して設定されます。あなたのアプリケーションでは、アプリケーションが動作しているサーバー、おそらく米国のタイムゾーンのデフォルトのタイムゾーンになります。

サーバのUnixコンソールにコマンドdate +%Zを実行してみます。

関連する問題