6

C#バックエンドとJavaフロントエンドで構成されるシステムがあります。C#バックエンドは、他のシステムや一部のモバイル デバイスと通信します。C#

側では 、特に、モバイル デバイスから送信されるタイムスタンプのタイム ゾーンを認識し、対応するオブジェクトを作成する必要があります。これは問題なく動作しています。Java側で は、モバイル デバイスから送信されたデータと共にタイム ゾーン情報を表示する必要があります。このクラスを使用して、ドメイン オブジェクト内にタイム ゾーン情報を格納しています。 問題は、 C#に対応する Java の e オブジェクトをどのように作成できるかです。TimeZoneInfo

TimeZone

TimeZonTimeZoneInfoオブジェクト?私の知る限り、タイムゾーンには一意の ID がありません。さらに、名前も異なります (たとえば、C#では " Central Europe Standard Time"、Javaでは " Central Europe Time")。C# と Java のタイム ゾーンの数も同じではありません。

4

2 に答える 2

6

「時間」は「タイムゾーン」とは無関係であることを知っているので、その点については詳しく説明しません:)

「TimeZone」は、プログラミング言語というよりも、実際には OS の機能です。

Android の「タイム ゾーン ID」は、標準の IANA「オルソン データベース」に対応しています。

式の残りの半分は、.Net タイムゾーンを「標準」にマッピングすることです。このリンクは役立つはずです:

于 2012-08-23T08:00:32.830 に答える
5

paulsm4 が言うように、Windows 名をTZDB (別名 Olson、別名 tz、別名 zoneinfo) 名にマップできます - マッピングは定期的に変更されますが、詳細についてはUnicode CLDRを実際に確認する必要があります。マッピング テーブルの形式が時間の経過とともに変更されたこと、および一部の Windows ID が複数の TZDB ID にマップされることに注意してください。(完全に欠落しているものもあります。)

別の方法として、Windows タイム ゾーン ID を完全に放棄し、スタック全体で TZDB を使用することを検討できます。これは、私がしばらく取り組んできた .NET 日付/時刻 API であるNoda Timeを使用する場合です。また、Noda Time の「エンジン」のベースとなったライブラリであるJoda Timeを使用すると、Java の日付/時刻の作業がより簡単になります。DateandCalendarを Javaで使用するよりもはるかに優れています。

于 2012-08-23T08:07:16.230 に答える