4

私は Flex 3 アプリケーションに取り組んでいます。特定のタイムゾーンを表す Date オブジェクトを actionscript3 で作成する方法を知りたいです。私のアプリケーションは国際的に使用されており、アプリケーション全体の標準タイムゾーンを作成したいと考えています。調査によると、特定のタイムゾーンに基づいて日付オブジェクトを作成できないことがわかりました。これに関する提案はありますか?参考までに、すべてのビジネスロジックはサーバー上のJavaにあり、フロントエンドにはflexを使用しています。

アップデート:

「Fri Sep 28 05:16:37 EDT 2012」としてサーバーからフレックスまでの時間を取得していますが、新しい Date() でインスタンス化すると、無効な日付エラーがスローされます。そのため、「Fri Sep 28 05:16:37 GMT -0400 2012」と修正し、new Date() でインスタンス化しましたが、結果が IST になり、タイムゾーン情報が失われました。フレックスでタイムゾーンを保持するにはどうすればよいですか?

4

3 に答える 3

4

物事をUTCとして保存したいと仮定します....

サーバーで JVM パラメータを設定できます

-Duser.timezone=UTC

これにより、コンピューターのタイムゾーンに関係なく、サーバーが強制的に UTC として実行されます。

次に、オブジェクトを flex から Java に戻すときに、日付オブジェクトを更新する必要があります。何かのようなもの

 var utcDate:Date = new Date(d.valueOf() - (d.timezoneOffset * MS_OF_ONE_MIN));

ここで、d はフレックスからの日付であり、フレックスが実行されている PC のタイムゾーンを持っています。

BlazeDS のようなものを使用している場合は、シリアル化を行うオブジェクトであるため、 RemoteObject内のすべての日付を変換する関数を呼び出すことができます。

あなたが抱えている大きな問題は、フレックス Date オブジェクトに setTimezone がないことです。つまり、UTC 日付を取得するには、これらすべてのフープをジャンプする必要があります。

于 2012-09-28T09:41:01.533 に答える
3

Date オブジェクトの UTC フィールドを使用して、均一な時刻を取得します。次に、 getTimezoneOffset() を使用して、現在のコンピューターが UTC からどれだけ離れているかを取得できます。それ以外の場合は、質問を明確にしてください。ローカルの Date オブジェクトから UTC データで厳密に操作する以外に、実際に何が必要かを解読できません。

于 2012-09-28T06:17:22.747 に答える
1

理想的には、サーバーを含め、サーバー側のタイムゾーンについては何も気にする必要はありません。サーバーの場所がビジネス上の有用な意味を持つ可能性は非常に低く、サーバーをどこでも実行できると非常に便利です。

代わりに、UIが実際に何を表しているかを理解する必要があります。実際にタイムゾーンが中立であるのはローカルの日時ですか?タイムゾーンが中立になるのは「単なる日付」ですか?それは特定の瞬間ですか(たとえば、どこで発生したかに関係なく、特定の電話が発生したとき)?(より多くのオプションがありますが、これらは最も一般的なものです。)

データが実際に何を意味するのかを理解したら、それをサーバーに送信する正しい方法(それについては何も教えていない)を理解し、サーバー上でデータを表現する方法を理解できます。組み込みクラスやクラスの代わりにJodaTimeを使用すると、サーバー側のコードがより明確になります。上記の各概念を適切なJodaTimeタイプで表すことができます。java.util.Datejava.util.Calendar

ただし、最初に放棄するのは、サーバーのタイムゾーンで実際に作業する必要があるという考えです。少なくとも、それを非常に珍しく、コストがかかる可能性のある決定として正当化する必要があります。

于 2012-09-28T06:35:16.440 に答える