問題タブ [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.
asp.net-web-api - WebAPI モデルで NodaTime Instant を使用すると、常に検証に失敗します
WebAPI v4 エンドポイントのモデルの 1 つに type のフィールドがありますNodaTime.Instant
。モデルの検証では、これが失敗したことが常に報告され ( Model.IsValid == false
)、エラー メッセージ "Unexpected token parsing Instant. Expected String, got Date." が表示されます。これは明らかにNodaTimeからのものです。
実際、要求メッセージはInstant
ISO-8601 日付を含む文字列として を渡します。そのため、DateTime
NodaTime が取得する前のある時点で BCL に解析される必要があります。と を使用してみOffsetDateTime
ましLocalDateTime
たが、いずれの場合も同様のエラーが発生しました。
それで、私はここで何をすべきですか?以外のものを渡す必要がありInstant
ますか? このエラーを引き起こさない解析または検証を処理する他の方法はありますか?
以下に最小限の再現を含めました。次のようなリクエストボディで POST すると失敗するはずです{"SomeInstant":"2013-08-13T17:51:22.1705292Z"}
c# - Noda Time(またはサードパーティのタイプ)オブジェクトをWCFのパラメータとして渡す方法は?
OperationContract パラメータでNoda Time 型 (LocalDate
およびZonedDateTime
) を使用するサービスがありますが、たとえば送信しようとするとLocalDate(1990,7,31)
、サーバーはデフォルト値 (1970/1/1) のオブジェクトを受信します。クライアントまたはサーバーによってエラーがスローされることはありません。
以前は、対応する BCL タイプ ( ) でうまく機能していましたDateTimeOffset
。Noda Time 型が WCF によって「認識」されていない可能性があることは理解していますが、それらを追加する方法がわかりません。既知の型に関するドキュメントでこのページを確認しましたが、役に立ちません。
BCL 型との間のダーティな (そしておそらく不完全な) 手動変換/シリアル化を回避するためにこれを行う方法はありますか?
ありがとうございました。
c# - 異なるタイムゾーン間の時間の変換
ユーザーの現在の時刻と、世界中のさまざまな都市を表示する Windows ストア時計アプリを構築しています。
当初は、Google などのタイムゾーン Web サービスを完全に使用する予定でしたが、無料アカウントで許可されるリクエストの数と、有料アカウントを取得するためのコストを検討した結果、別の方法を見つけたほうがよいと感じました。家を抵当に入れなくても解決。
いろいろと調べてみると、John Skeet とチームによる優れた NodaTime ライブラリが見つかりました。ドキュメントとここでスタックオーバーフローを掘り下げた後、私の頭はまだすべての日時とタイムゾーンに関連する用語と変換方法で賑やかです。とにかく、私は2つのオプションでこれを行うことができると思いました:
オプション 1 : DateTime.Now を使用して現在のシステム時刻を取得し、次のように nodatime を使用して他のゾーンの時刻を取得します (SO に関する別の質問への返信で Matt Johnson によって提供されたコードに基づく):
オプション 2 : さらに調べたところ、この解決策を見つけ、次のようにもうまく機能すると感じました。
ここで質問に答えてみましょう: 上記の両方のオプションでは、DateTime.NowまたはSystemClock.Instance.Nowのいずれかに依存して、最初にユーザーのシステム時刻を識別し、次にそれを必要なタイムゾーンの都市時間に変換します。しかし、ユーザーのシステムが正しい時刻に設定されていない場合はどうなるでしょうか? 私は信じています(間違っている場合は修正してください)DateTime.NowとSystemClock.Instance.Nowは両方ともシステムクロックを使用して現在の時刻を取得していますか? システム時刻が正しく設定されていないと仮定すると、ユーザーのシステム時刻に依存しているため、タイムゾーンを変換すると他の都市の時刻が間違って表示されるだけです。
このような場合、システム クロックに依存せずにユーザーの現在の時刻を確立するにはどうすればよいですか? 緯度/経度を使用してユーザーの現在のタイムゾーンを取得するために Web サービスを使用するように戻す必要がありますか、またはオフラインで作業できる NodaTime などを使用するより良いオプションはありますか? ありがとう。
c# - NodaTime を使用して緯度と経度で国コードを取得する
NodaTime は既に olson データベース内に緯度/経度と国コードのデータを持っているため、緯度/経度 (Windows ストア アプリの GeoLocator.GetGeopositionAsync によって返される緯度/経度など) を指定して、タイムゾーンと国コードを特定できるかどうか疑問に思っていました。それから?
これに似たもの:var zone = session.GetZoneForLocation(latitude, longitude);
これはhttps://github.com/mj1856/Raven.TimeZonesからのものです
私は特に NodaTime のようなオフライン ソリューションを検討しており、Web サービスを使用していません。
c# - 現地時間から GMT への変換 (nodatime を使用した世界時計アプリケーション)
私は Nodatime を使用して世界時計をプログラムしようとしています。ライブラリの使用方法に関するサンプルを Web で検索し、ドキュメントを読みました。クラス Instant は、いくつかの任意のepoch 1970 年 1 月 1 日 UTC の真夜中に対応する Unix エポック。まあ、私は経験的に、インスタントとして GMT 値を使用すると、それを使用して各タイム ゾーンの時間値を計算し (世界時計を作成)、うまくいくと推測しました。私が抱えている問題は、現地時間から GMT 時間 (または GMT インスタント) を計算する簡単な方法がわからないことです。私のタイムゾーンは「America/Mexico_City」なので、近道はありますか? "
asp.net-mvc-4 - mvc4で野田時間を使用してブラジル時間でUTC時間を変換します
私は MVC4 プロジェクトで作業しています。このプロジェクトでは、サーバーから取得している UTC 時間をブラジルのタイムゾーンに変換する必要があります。
noda time ライブラリで UTC 時間をブラジル時間に変換するにはどうすればよいですか。
c# - ServiceStack.OrmLite で複合型のシリアル化/逆シリアル化をカスタマイズするにはどうすればよいですか
私は ServiceStack.OrmLite を使用してSQLite
データベースにデータを保持していますが、これまでのところ非常に満足しています。
ただし、私のオブジェクトの多くには、 を使用してシリアル化したくない複雑な型のプロパティがありますJSV
。
プロパティをデータベースに (文字列として) 格納するために使用するカスタムのシリアライゼーション/デシリアライゼーションを指定できる必要があります。世界では、db4o
これは によって提供される翻訳機能を使用することと同等IObjectConstructor
です。
適切にシリアル化および逆シリアル化できない複雑な型の良い例は、文字列に簡単にマップできるにもかかわらず、NodaTime 型です (私は で使用したシリアル化/逆シリアル化関数を既に持っていますdb4o
)。
それを達成する最も簡単な方法は何ですか?この複雑な型のプロパティを含む型ごとにラッパーを作成して維持する必要があるため、ラッパーはあまり便利ではありません。