2008-09-19 14 views
10

Jaki jest najlepszy sposób wygenerowania bieżącego znacznika daty w języku Java?Wygeneruj bieżący datownik w języku Java

YYYY-MM-DD: hh-mm-ss

+0

"kiedy nie korzysta się z bazy danych"? Co?? Czy zwykle przesyłasz zapytanie do bazy danych, aby pobrać aktualny czas? –

+0

Czy chcesz String w tym formacie lub jakiś obiekt timestamp/date? – sblundy

+0

JohnMilikan: Nieefektywne, możesz wybrać bieżącą datę z sysibm.sysdummy1 (to jest wariant DB2, nie pamiętam, jak nazywa się tabele atrap Oracles). Masz rację, to nie jest tak, jak bym to zrobił. – paxdiablo

Odpowiedz

26

Używając standardowego JDK, będziesz chciał skorzystać java.text.SimpleDateFormat

Date myDate = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); 
String myDateString = sdf.format(myDate); 

Jednakże, jeśli masz możliwość skorzystania z pakietu Apache Commons Lang, można użyć org.apache.commons. lang.time.FastDateFormat

Date myDate = new Date(); 
FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd:HH-mm-ss"); 
String myDateString = fdf.format(myDate); 

FastDateFormat ma tę zaletę, że jest wątek bezpieczne, dzięki czemu można używać jedno wystąpienie w całej aplikacji. Jest to ściśle związane z formatowaniem dat i nie obsługuje parsowania, takiego jak SimpleDateFormat w następującym przykładzie:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); 
Date yourDate = sdf.parse("2008-09-18:22-03-15"); 
+1

Od wersji 3.2 FastDateFormat obsługuje parsowanie :) – Ross

8
Date d = new Date(); 
String formatted = new SimpleDateFormat ("yyyy-MM-dd:HH-mm-ss").format (d); 
System.out.println (formatted); 
+0

W tym przykładzie brakuje słowa kluczowego "new" przed SimpleDateFormat ("rrrr ... –

+0

@ dz, dziękuję, naprawiono –

+0

Nie lubię sekcji kodu, które nie mają wymaganego importu – paxdiablo

0

SimpleDateFormatter to, co chcesz.

1

Jest też

long timestamp = System.currentTimeMillis() 

czyli co new Date() (@John Millikin) wykorzystuje wewnętrznie. Kiedy już to zrobisz, możesz go sformatować w dowolny sposób.

0

Uważam, że w swoim pytaniu trzeba być nieco bardziej przejrzystym. W szczególności jakiego rodzaju danych chcesz na końcu procesu? Ciąg?

0
final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd:hh-mm-ss"); 

formatter.format(new Date()); 

Numer JavaDoc for SimpleDateFormat zawiera informacje na temat ciągów wzorów daty i czasu.