Bir java.sql Zaman Damgasını görüntülemek için nasıl biçimlendirebilirim?


103

Bir java.sql Zaman Damgasını beğenime nasıl biçimlendirebilirim? (görüntüleme amacıyla bir dizeye)

Yanıtlar:


160

java.sql.Timestampgenişler java.util.Date. Yapabilirsin:

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

Veya zamanı da eklemek için:

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

3
Bu işe yarayacak, ancak SimpleDateFormat iş parçacığı güvenli olmadığı için dikkatli olun.
Brian Agnew

17
SimpleDateFormat nesnesi yerel kapsamlı bir nesne ise (yalnızca bir yöntem içinde oluşturulur ve kullanılır), o zaman iş parçacığı açısından güvenlidir, çünkü üzerinde bulunacağı yığın doğal olarak "iş parçacığı açısından güvenlidir" (çünkü tek bir iş parçacığına aittir).
quantum

5
Saati dahil etmek için SimpleDateFormat ("AA / gg / yyyy ss: dd") veya benzeri bir şey kullanmanız gerekir
AverageMarcus

1
ihtiyacı olanlar için eksiksiz hale getirmek için, String S = new SimpleDateFormat ("MM / gg / yyyy HH: mm: ss"). format (myTimestamp);
Ishan Liyanage

27

String.format (veya java.util.Formatter ) kullanın :

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

DÜZENLEME:
TD ve TT'nin ne anlama geldiğini öğrenmek için lütfen Biçimlendiricinin belgelerine bakın: java.util.Formatter'a tıklayın.

İlk 'T' şu anlama gelir:

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

ve bu 'T'yi takip eden karakter:

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

1
Bana göre en iyi cevap bu. Sadece zaman damgasını bir dizeye dönüştürmek için gereksiz nesne oluşturulmaz.
Salil

1
Şimdi belgelerin nerede bulunacağı ve ne anlama geldiği açık olmalı
user85421

Çok zarif. Daha açık olmak gerekirse, buradaki örnek tarafından üretilen biçimlendirme benziyor 05/30/17 00:39:18.
Noumenon

@Noumenon teşekkürler, sorunun sorulduğu biçim "
beğenilerime" böyleydi

10

Bu belirli soru için, standart çalışma önerisi java.text.SimpleDateFormat, ancak SimpleDateFormat iş parçacığı açısından güvenli olmayan talihsiz yan etkiye sahiptir ve çok iş parçacıklı senaryolarda çıktınızı bozacağından özellikle kötü sorunların kaynağı olabilir ve siz istisnalar olsun!

Ben ediyorum şiddetle bakarak tavsiye Joda böyle bir şey için. Neden ? Java için mevcut kitaplıktan çok daha zengin ve daha sezgisel bir zaman / tarih kitaplığıdır (ve gelecek vadeden yeni standart Java tarih / saat kitaplığının temelidir, bu nedenle yakında standart olacak olanı öğreneceksiniz. API).


8
İyi uyarı. Ancak ele alınması çok kolaydır - SimpleDateFormat örneklerini oturum kapsamı / örnek değişkenleri / statik bağlamda depolayarak ve ardından bunlara birden çok iş parçacığından erişerek paylaşmayın. Metodunuz içinde yeni bir SimpleDateFormat () oluşturun ve kullandıktan sonra atın. Bu iş parçacığı güvenlidir.
Glen Best

Elbette SimpleDateFormat örneğini gerçekten depolamak / paylaşmak istiyorsanız, erişimi senkronize edin: senkronize (simpleDateFormatInstance) {s = simpleDateFormatInstance.format (myTimeStamp)} VEYA SDF sınıfının özel bir uzantısını oluşturun ve bunu format yöntemi içinde otomatik olarak yapın.
Glen Best



-9

Dize timeFrSSHStr = timeFrSSH.toString ();

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.