2

次のことを試したので、タイムゾーンに基づいて日付を取得できます"Africa/Johannesburg"GMT+2:00、Googleサーバーは常に、私の2時間遅れた独自のタイムゾーンを使用して時間を返します。

私はFFをやった:

appengine-web.xml設定 しました

<property name="user.timezone" value="Africa/Johannesburg"/>

TimeZone.setDefault(TimeZone.getTimeZone("GMT+2:00"));Dateオブジェクトを作成する前にも試し ました

私のサーブレットのinitメソッドで、私も試しました

@Override
    public void init() throws ServletException {
         TimeZone.setDefault(TimeZone.getTimeZone("GMT+2:00"));
    }

しかし、これだけではうまくいきません。JDKの日付はスレッドセーフではないため、うまく機能するJodaTimeを使用しています。実際にはnew DateTime(DateTimeZone.forID("Africa/Johannesburg"))正確な時刻を取得しますが、レガシーの問題のために、日付をJDKの日付に保存する必要があるため、呼び出してJodaをJDKの日付に変換する必要があります。 Date() の場合、時刻は間違ったタイムゾーンで完全に台無しになります。

時間の差を差し引かずにこれを設定する方法を知っている人はいますか。

4

2 に答える 2

1

できません。システムのタイムゾーンは変更できません。すべての日付を UNIX 時間で保存し、タイムゾーンを使用して Date オブジェクトまたは Calendar オブジェクトに変換する必要があります。また、GAEが常に同じタイムゾーンを使用するとは思いません...

于 2013-05-21T15:01:29.627 に答える