Rumah >Java >javaTutorial >Adakah Storan `java.sql.Timestamp` Java Bergantung pada Zon Masa?
Adakah Storan java.sql.Timestamp Dipengaruhi oleh Zon Masa?
Dalam JDBC, kelakuan kaedah setTimestamp() dengan java.sql. Cap masa mungkin berbeza-beza berdasarkan pemandu pelaksanaan.
Gelagat Pemandu:
Kebanyakan pemacu mematuhi peraturan yang digariskan dalam javadoc untuk setTimestamp(int parameterIndex, Timestamp x, Kalendar cal). Jika tiada objek Kalendar disediakan, pemacu biasanya menggunakan zon waktu mesin maya yang menjalankan aplikasi.
Storan Cap Masa dalam Pangkalan Data:
Apabila menggunakan setTimestamp( int parameterIndex, Timestamp x) tanpa menyatakan Kalendar, pemacu menukar cap waktu kepada zon waktu VM sebelum menyimpannya dalam pangkalan data. Jika lajur pangkalan data kekurangan maklumat zon waktu, penukaran ini mungkin mengakibatkan kehilangan data zon waktu.
Contoh:
Pertimbangkan zon waktu tempatan GMT 2 dan cap masa UTC "2012-12-25 10:00:00 UTC." Selepas penyimpanan dalam pangkalan data, cap masa muncul sebagai "2012-12-25 12:00:00" (GMT 2). Jika diambil oleh aplikasi dalam GMT 0, cap masa akan ditafsirkan sebagai "2012-12-25 12:00:00 UTC."
Menyimpan Cap Masa dalam Zon Waktu Tertentu:
Untuk menyimpan cap masa dalam zon waktu tertentu, gunakan setTimestamp(int parameterIndex, Cap masa x, Kalendar cal) dengan contoh Kalendar yang diingini (cth., Calendar.getInstance(TimeZone.getTimeZone("GMT")) untuk GMT).
Pendapatan Cap Masa:
Begitu juga, apabila mendapatkan cap masa, pastikan anda menggunakan zon waktu yang sama seperti semasa menyimpan mereka.
Menggunakan java.time.LocalDateTime dengan JDBC 4.2 :
Dalam pemacu yang mematuhi JDBC 4.2, anda boleh menggunakan java.time.LocalDateTime (dan java.time. LocalTime) dengan jenis TIMESTAMP dan TIME melalui kaedah get/set/updateObject. Kelas ini mewakili masa tanpa zon waktu.
Atas ialah kandungan terperinci Adakah Storan `java.sql.Timestamp` Java Bergantung pada Zon Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!