問題タブ [zoneddatetime]
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.
datetime - ZonedDateTime の XMLGregorianCalendar 形式の日付
私は日付を取り、XMLGregorianCalendar 形式の日付を以下のように与える関数を持っています2017-11-30T00:00:00.000-08:00
。2017-11-30
上記の関数を Java 8 ZonedDateTime で書き直そうとしていますが、日付2017-11-29T00:00:00-08:00
を取得しています。上記の関数と同じ正確な出力を取得するにはどうすればよいですか? また、日付が 30 ではなく 29 である理由がわかりません。
java - .equals() が機能するように ZonedDateTime を正規化する方法は?
次のようなコードがあります。
ここで利用可能なコード: https://ideone.com/43zf8B
問題:
- これらは両方とも型指定された ZonedDateTime オブジェクトです
- .isEqual() メソッドによると、それらは同等です。
- それらは . equals() メソッドによると同等ではありません
ただし、私のテスト スイートは、これらの datetime インスタンスが含まれるクラスに対して beEquals 操作を使用してディープ マッチングを使用するため、.equals() が true を返すようにそれらを正規化する方法が必要です。
どうすればそれらを正規化できますか?
java - Java ZonedDateTime と英国夏時間
現在、日付が英国夏時間の内側と外側にある場合の ZonedDateTime の動作を見ています。
英国の夏時間は 3 月 25 日に始まり、1 時間 (+1) 追加されます。
ZonedDateTime (UTC およびヨーロッパ/ロンドン) のいくつかのインスタンスを作成し、次にそれらに 1 か月を追加して、それらが ZonedDateTime に分類されるようにしました。
これは、これらの日付を印刷した結果です。
最後に、各日付のエポック秒を出力しました。
ZonedDateTime が不変であることは知っています。これは、1 か月を追加すると、実際には変更された月で新しいインスタンスを作成することを意味します。与えられた観察に対する私の仮定が正しいかどうか教えてください。
1 か月追加すると、ZonedDateTime の新しいインスタンスが作成されます。ZonedDateTime の時間は常に同じです。新しい日付が BST かどうかは関係ありません。(LondonFirstMarch と LondonFirstMarchPlusMonth を見てください)
1 か月を追加した後、londonFirstMarchPlusMonth は BST に分類され、12:00 のままになるため、実際には 1 時間を抽出します。これは、基になるエポック秒が utcFirstMarchPlusMonth とは異なることを意味します。
最後に londonFirstMarchPlusMonthToUtc でゾーンを UTC に変換すると、実際の時間は 11:00 であることがわかりました。
- 正確に1か月後の日付が必要な場合。UTC のみを使用し、オプションで最後にロンドン/ヨーロッパに変換する必要がありますか?
編集:
おそらく私は十分に明確ではありませんでした - 申し訳ありません。1 か月は任意の値であるため、最初の日付に追加すると、BST に該当する 2 番目の日付が生成されます。
前述のように、1 か月は月によって意味が異なるため、おそらく良い例ではありません。私にとってのポイントは、「月」が 24 時間単位で構成されるということでした。(Ole.vvが言ったとおり)
UTC 時間で動作し、オプションでそれをヨーロッパ/ロンドンに変換することが、「私の質問」に対する解決策だと思います