C#バックエンドとJavaフロントエンドで構成されるシステムがあります。C#バックエンドは、他のシステムや一部のモバイル デバイスと通信します。C#
側では
、特に、モバイル デバイスから送信されるタイムスタンプのタイム ゾーンを認識し、対応するオブジェクトを作成する必要があります。これは問題なく動作しています。Java側で
は、モバイル デバイスから送信されたデータと共にタイム ゾーン情報を表示する必要があります。このクラスを使用して、ドメイン オブジェクト内にタイム ゾーン情報を格納しています。
問題は、 C#に対応する Java の e オブジェクトをどのように作成できるかです。TimeZoneInfo
TimeZone
TimeZon
のTimeZoneInfo
オブジェクト?私の知る限り、タイムゾーンには一意の ID がありません。さらに、名前も異なります (たとえば、C#では " Central Europe Standard Time
"、Javaでは " Central Europe Time
")。C# と Java のタイム ゾーンの数も同じではありません。
2 に答える
「時間」は「タイムゾーン」とは無関係であることを知っているので、その点については詳しく説明しません:)
「TimeZone」は、プログラミング言語というよりも、実際には OS の機能です。
Android の「タイム ゾーン ID」は、標準の IANA「オルソン データベース」に対応しています。
式の残りの半分は、.Net タイムゾーンを「標準」にマッピングすることです。このリンクは役立つはずです:
paulsm4 が言うように、Windows 名をTZDB (別名 Olson、別名 tz、別名 zoneinfo) 名にマップできます - マッピングは定期的に変更されますが、詳細についてはUnicode CLDRを実際に確認する必要があります。マッピング テーブルの形式が時間の経過とともに変更されたこと、および一部の Windows ID が複数の TZDB ID にマップされることに注意してください。(完全に欠落しているものもあります。)
別の方法として、Windows タイム ゾーン ID を完全に放棄し、スタック全体で TZDB を使用することを検討できます。これは、私がしばらく取り組んできた .NET 日付/時刻 API であるNoda Timeを使用する場合です。また、Noda Time の「エンジン」のベースとなったライブラリであるJoda Timeを使用すると、Java の日付/時刻の作業がより簡単になります。Date
andCalendar
を Javaで使用するよりもはるかに優れています。