Bagaimana cara memformat cap waktu java.sql untuk ditampilkan?


103

Bagaimana cara saya memformat cap waktu java.sql sesuai keinginan saya? (ke string, untuk tujuan tampilan)

Jawaban:


160

java.sql.Timestampmeluas java.util.Date. Anda dapat melakukan:

String s = new SimpleDateFormat("MM/dd/yyyy").format(myTimestamp);

Atau untuk juga memasukkan waktu:

String s = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(myTimestamp);

3
Itu akan berhasil, tetapi berhati-hatilah karena SimpleDateFormat tidak aman untuk thread.
Brian Agnew

17
Sekadar pengingat kecil bahwa jika objek SimpleDateFormat adalah objek berskala lokal (dibuat dan digunakan hanya di dalam metode), maka objek ini aman untuk thread, karena tumpukan tempat ia berada secara inheren "aman untuk thread" (karena milik satu utas).
kuantum

5
Untuk memasukkan waktu, Anda perlu menggunakan SimpleDateFormat ("MM / dd / yyyy hh: mm") atau yang serupa
AverageMarcus

1
untuk membuatnya lengkap bagi yang membutuhkannya, String S = new SimpleDateFormat ("MM / dd / yyyy HH: mm: ss"). format (myTimestamp);
Ishan Liyanage

27

Gunakan String.format (atau java.util.Formatter ):

Timestamp timestamp = ...
String.format("%1$TD %1$TT", timestamp)

EDIT:
silakan lihat dokumentasi Formatter untuk mengetahui apa arti TD dan TT: klik java.util.Formatter

'T' pertama adalah singkatan dari:

't', 'T'    date/time   Prefix for date and time conversion characters.

dan karakter yang mengikuti 'T' itu:

'T'     Time formatted for the 24-hour clock as "%tH:%tM:%tS".
'D'     Date formatted as "%tm/%td/%ty". 

1
Ini jawaban terbaik menurut saya. Tidak ada objek yang berlebihan dibuat hanya untuk mengubah stempel waktu menjadi string.
Salil

1
Sekarang harus jelas di mana menemukan dokumentasi dan apa artinya
user85421

Sangat elegan. Untuk memperjelas, format yang dihasilkan oleh contoh di sini terlihat seperti 05/30/17 00:39:18.
Noumenon

@Noumenon terima kasih, itu adalah format "sesuai dengan keinginan saya" seperti yang diminta oleh pertanyaan [:-)
user85421

10

Untuk pertanyaan khusus ini, saran standar java.text.SimpleDateFormatberfungsi, tetapi memiliki efek samping yang SimpleDateFormat tidak menguntungkan yang tidak aman untuk utas dan dapat menjadi sumber masalah yang sangat buruk karena itu akan merusak keluaran Anda dalam skenario multi-utas, dan Anda tidak akan melakukannya. dapatkan pengecualian!

Saya akan sangat merekomendasikan melihat Joda untuk hal seperti ini. Kenapa? Ini adalah pustaka waktu / tanggal yang jauh lebih kaya dan lebih intuitif untuk Java daripada pustaka saat ini (dan dasar dari pustaka tanggal / waktu Java standar yang baru dan akan datang, jadi Anda akan segera mempelajari pustaka yang akan segera menjadi standar. API).


8
Peringatan yang bagus. Tetapi sangat mudah untuk ditangani - jangan bagikan instance SimpleDateFormat dengan menyimpannya dalam cakupan sesi / variabel instance / konteks statis, lalu mengaksesnya dari beberapa utas. Cukup buat SimpleDateFormat () baru di dalam metode Anda dan buang setelah digunakan. Itu threadsafe.
Glen Best

Tentu saja jika Anda benar-benar ingin menyimpan / berbagi instance SimpleDateFormat, sinkronkan akses: sinkron (simpleDateFormatInstance) {s = simpleDateFormatInstance.format (myTimeStamp)} ATAU buat ekstensi kustom dari kelas SDF, dan lakukan ini secara otomatis dalam metode format.
Glen Best



-9

String timeFrSSHStr = timeFrSSH.toString ();

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.