3

私は共通の問題を抱えています:

タイムゾーン間の時間を変換する必要がある

1-クライアント側のタイムゾーンを見つける必要があります

2-UTCに変換する

したがって、いくつかの検索の後、クライアント側のタイムゾーンを見つける唯一の方法は Use java script であり、私も Use This Libraryであることがわかりましたが、このライブラリは次の形式でタイムゾーンを返しました: Location/CityNameLike :"America/New_York"

次に、タイムゾーン間の時間を変換する唯一の方法は次のとおりです。

TimeZoneInfo.ConvertTimeToUtc(clientsidedatetime, TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time") /*Client Time Zone Name*/);

ご覧のとおり、で使用されているタイム ゾーン形式は、FindSystemTimeZoneById返された Java スクリプトとは異なります。

問題は、この 2 つの形式を相互に変換するにはどうすればよいかということAsia/SingaporeですSingapore Time

または、クライアント側の時間を検索して UTC 時間に変換するより良い方法はありますか?

4

1 に答える 1

3

「アメリカ/ニューヨーク」のようなタイムゾーンは、UNIX/Linuxベースのシステムおよび一般的なインターネットの標準です。原作者のArthurOlsonにちなんで、「Olson」タイムゾーンと呼ばれます。それらが基づいているデータベースは、「Olsonデータベース」、「tzデータベース」、または「zoneinfoデータベース」と呼ばれることもあります。それらは現在IANAによって維持されています。あなたはウィキペディアでそれらについてもっと読むことができます。

Olsonのタイムゾーンは、.NetTimeZoneInfoクラスが使用するMicrosoftWindowsのタイムゾーン識別子とはまったく互換性がありません。Microsoftは長い間、独自のタイムゾーンデータベースを持っていました。これは、Windows Updateによって維持され、Microsoftによってここで説明されています

これらの標準間の変換の信頼できるソースはUnicodeCLDR です。変換に使用できるテーブルを公開していますが、代わりにライブラリを使用することをお勧めします。

.NetでOlsonタイムゾーンとCLDRデータを操作するために利用できるライブラリがいくつかあります。最高の(IMHO )は、StackOverflowのセレブであるJonSkeetによるNodaTimeです。これは、Javaからの非常に人気のあるライブラリの移植版であり、Olsonタイムゾーンの実装と、多くの点でMicrosoftよりも優れている日時操作用のクラスの作り直されたセットが含まれています。

.NetにIANA/Olsonデータベースを実装していることを私が知っているライブラリは次のとおりです。

更新この情報のすべて、およびその他の情報は、StackOverflowTimeZoneタグwiki
で入手できます。

于 2012-09-17T20:58:19.327 に答える