Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengendalikan Zon Masa Dengan Betul Apabila Menggunakan java.sql.Timestamp dengan JDBC?

Bagaimanakah Saya Boleh Mengendalikan Zon Masa Dengan Betul Apabila Menggunakan java.sql.Timestamp dengan JDBC?

Barbara Streisand
Lepaskan: 2024-12-15 20:48:17
asal
948 orang telah melayarinya

How Can I Properly Handle Time Zones When Using java.sql.Timestamp with JDBC?

Memahami Pertimbangan Zon Masa untuk java.sql.Timestamp

Apabila menggunakan java.sql.Timestamp untuk menyimpan dan mendapatkan cap masa dalam pangkalan data, adalah penting untuk mempertimbangkan kesan zon waktu pada data.

Zon Masa Pengendalian dalam JDBC

Secara lalai, jika objek Timestamp ditetapkan menggunakan setTimestamp(int, Timestamp) tanpa menyatakan objek Kalendar, pemacu JDBC menggunakan zon masa mesin maya yang menjalankan aplikasi. Ini menunjukkan bahawa cap masa yang disimpan dalam pangkalan data mungkin tidak menggambarkan zon waktu yang dimaksudkan.

Menyimpan Cap Masa UTC

Untuk memastikan cap masa UTC disimpan dengan betul dalam pangkalan data, objek Kalendar mesti disediakan untuk setTimestamp(int, Timestamp, Calendar) dengan zon waktu yang dikehendaki. Untuk UTC, ini boleh dicapai seperti berikut:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
stmt.setTimestamp(11, tsSchedStartTime, cal);
Salin selepas log masuk

Kesan ke atas Output

Dengan mengabaikan pertimbangan zon waktu, kod yang diberikan menyimpan cap waktu UTC sebagai cap waktu setempat secara tidak betul. Ini boleh membawa kepada percanggahan apabila mendapatkan semula data daripada pangkalan data, kerana ia akan ditafsirkan berdasarkan zon waktu aplikasi semasa.

Kesan Zon Waktu Setempat pada Timestamp.toString()

The Kaedah timestamp.toString(), serupa dengan java.util.Date, mencetak cap waktu berdasarkan zon waktu tempatan mesin maya. Ia tidak menggambarkan zon masa bagi nilai yang disimpan.

JDBC 4.2 Solution

JDBC 4.2 memperkenalkan sokongan untuk java.time.LocalDateTime dan java.time.LocalTime untuk jenis data TIMESTAMP dan TIME . Kelas ini bersifat agnostik zon waktu, menghapuskan keperluan untuk penukaran zon waktu yang jelas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Zon Masa Dengan Betul Apabila Menggunakan java.sql.Timestamp dengan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan