SQL、jdbc、JVM、linuxのタイムゾーンの問題に取り組んでいます。java.sql.dateのドキュメントを理解できません
私はjdbcに渡す必要のあるクラスがjava.sql.dateであることがわかります。だから私はドキュメントを読んで、それを何も作ることはできません。
私が理解するように、java.util.Dataとjava.sql.dateの両方は、エポックから数ミリ秒を保持します。私はjava.sql.dateのコンストラクタの定義を見てみると
それは
は、「指定されたミリ秒の値を使用してDateオブジェクトを構築しますと言います。指定されたミリ秒の値は、時間情報が含まれている場合は、ドライバが設定されますGMTゼロに対応する既定のタイムゾーン(アプリケーションを実行しているJava仮想マシンのタイムゾーン)の時間コンポーネントです。
OK - 質問1 - 「指定されたミリ秒値に時間情報が含まれている場合」 - 何らかの時間情報が含まれていることを明確にしてください。
「あなたがルーチンに与えるミリ秒数が、閏秒などを考慮して正確な曜日境界を表していない場合」を意味しますか?それは会う/失敗するかなりランダムなテストのように聞こえる!
それとも、天国のために」を意味しない私たちに昼近くに何かを与える、と私たちは問題の一日の始まりにそれを切り捨てます
質問2 - ?、言葉では、これは奇妙なものですそれを??「FOR」句は明らかにいくつかの歯車が適切にメッシュにすることを意図しての行動である - しかし、彼らはどのような歯車で
あなたの答えは公開されたドキュメントと矛盾しているようです。 "ドライバは、ゼロGMTに対応するデフォルトのタイムゾーン(アプリケーションを実行するJava仮想マシンのタイムゾーン)の時間に時間コンポーネントを設定します" これは、いつかはGMTの真夜中になるでしょう - それを言うにはかなりぎこちない方法ですが。 –
「java.sql.Dateオブジェクトはいつか真夜中のGMTを含んでいます」とは、オブジェクトがあった瞬間にJVMが知っていたうるう秒数にしか当てはまりません作成した。うるう秒情報が後で更新される場合、同じ瞬間が前日に後ろにシフトすることがあります! –