問題タブ [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.
java - ZonedDateTime の SQL データベースへの永続性
こんにちは、
私は世界中で使用される Web アプリケーション サービスを作成しています。
したがって、日時の値を UTC で保存し、それらをエンド ユーザーへの壁時間の時計で表す必要があります。
スタックオーバーフローを読んだ後、次のことを行う必要があることを理解しました。
- DB の列タイプとしてタイムスタンプを使用します (現在の MariaDB 10.1.20)
- Java で ZonedDateTime を使用します (私は java8 を使用します)
これらの値を変換しているときに問題が発生しました。
JDBC を使用しているため、次の変換を行う必要があります。
私のコード:
私が使用する場合:
false が返されます (ドメイン モデルのオーバーライドされた equal メソッドでそれらを比較する必要があります)
以下は両方の出力です。
zonedDateTimeBeforeSave: 2017-01-24T20:18:17.720Z
zonedDateTimeAfterSave: 2017-01-24T20:18:17Z
質問:
- 私は私の選択で正しいですか?おそらく、別の列またはJavaタイプを使用する必要があります...
- 変換を行うのは正しいですか。他にもっと良い方法があるかもしれません
ありがとうございました
- 編集:マット・ジョンソンの助けの後、私は問題が実際にあることを理解しました.datetimeをDBに保存すると、分数は保存されませんが、そうすべきです. 参考までに列の型はtimestamp(6)です。
- 編集:ZonedDateTimeの代わりにjava.time.Instantを使用するようになりました
java - ZonedDateTime または Instant で時分秒を 00 に設定します。
Utc 形式の日付文字列があります -
そして、 ZonedDateTimeのJava日付表現で以下の形式に変換したいと思います。
ZonedDateTimeが出力されると、表示されるはずです
次のコードを試しました-
出力:
開始時刻を ZonedDateTime で正規化したいと考えています。サードパーティのライブラリではなく、Java ライブラリのみを使用してそれを実現したいと考えています。