問題タブ [nodatime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
375 参照

timezone - ゾーン化された dateTime から UTC 時間 - LocalDateTimePattern が例外をスローする

以下のコードを使用して、NodaTime の LocalDateTime パターンを使用して、ゾーン化された日時から UTC 時刻を取得しようとしています。

以下のシナリオでの解析中に例外が発生します。1) パターンが「MM/dd/yyyy HH:mm:ss tt」のようで、DateTime 文字列が「5/28/2013 1:02:ss PM」のような場合2) パターンが「MM-dd-yyyy HH:mm:ss tt」のようなもので、DateTime 文字列が「5/28/2013 1:02:ss PM」のようなものである場合

最初のケースでは、パターンを「M/dd/yyyy HH:mm:ss tt」に変更すると機能しますが、先頭のゼロが失われてしまいます。パターンを「MM/dd/yyyy HH:mm:ss tt」に変更すると、2 番目のケースが機能します。

UTC 値を取得する別の方法はありますか、それともここで何か間違ったことをしていますか?

0 投票する
1 に答える
2687 参照

c# - .net の「あいまいな時間」にどのように対処しますか?

「DateTime」値を異なるタイムゾーンから UTC に、またはその逆に変換する必要があります。これには TimeZoneInfo を使用します。しかし、問題は「サマータイム」の時間変更がいつ発生するかです。

たとえば、今年は、次回は 11 月 3 日の午前 2 時 [CDT] に時刻が変更されます。したがって、11 月 3 日の午前 1 時 [CDT] は午前 6 時に変換され、次の時間に時刻が変更されると、午前 1 時 [現在の CST] になります。再び午前 6 時に変換されます。このページのコードを試してみましたが、この問題の処理方法については何も書かれていませんでした。では、この問題をどのように処理するのですか?

編集:

NodaTimeを試してみましたが、次のような変換を行うと

AmbiguousTimeException をスローします。それは良いことです。TimeZoneInfo を使用してこれを行うこともできます。しかし、どの localTime 値を選択する必要があるかを知るにはどうすればよいでしょうか?

編集2:

Matt とのチャット ディスカッションへのリンクは次のとおりです。

0 投票する
3 に答える
74800 参照

c# - Windows と IANA のタイム ゾーンを変換する方法は?

timezone tag wikiで説明されているように、タイム ゾーンには 2 つの異なるスタイルがあります。

  • Windows および .NetTimeZoneInfoクラス (Windows で実行する場合) で使用するために Microsoft によって提供されるものは、 などの値で識別され"Eastern Standard Time"ます。

  • TZDB で IANA によって提供され、TimeZoneInfoLinux または OSX での実行時に .NET クラスによって使用されるものは、 などの値によって識別され"America/New_York"ます。

多くのインターネット ベースの API は IANA タイム ゾーンを使用しますが、さまざまな理由から、これを Windows タイム ゾーン ID (またはその逆) に変換する必要がある場合があります。

これを .Net でどのように実現できますか?

0 投票する
2 に答える
1722 参照

c# - MongoDB での NodaTime: 値クラス NodaTime.ZonedDateTime を逆シリアル化できません

NodaTimeMongo DB Official Driverの最新バージョンを使用しています。ZonedDateTimeいくつかのプロパティで、.NET DateTime の代わりにNodaTime を使用する単純な POCO クラスがあります。

モデルをコレクションに簡単に入れることができますが、クエリされたモデルを読み取ろうとすると、次のようになりますMongoDB.Bson.BsonSerializationException

値クラス NodaTime.ZonedDateTime は逆シリアル化できません

この問題を解決/回避するための良い方法またはベスト プラクティスは何ですか?

アップデート

問題の解決策を投稿した後、新しい問題が発生する可能性があります... コレクションをクエリし、クエリで DateTime を使用すると、 where 句を評価する前に ZonedDateTimeSerializer` のwhere SomeDateTime < now' (whereようになります。is a variable I create from system time) it seems that each document must be deserialized using myこれは大きなパフォーマンスの問題のようですね。たとえそれが痛いとしても、BCL DateTime に戻ることを本当に考えなければなりません。

更新 2

を使用してソリューションを受け入れていますZonedDateTimeSerializerが、NodaTime と MongoDB の組み合わせには満足していませんが、どちらも優れた個々のソリューションです。しかし、現時点では、重い操作なしではうまく連携できません。