2009-07-20 15 views

risposta

135

java.sql.Timestamp estende java.util.Date. Volevi qualcosa di simile:

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

di includere il tempo:

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

Funzionerà, ma attenzione poiché SimpleDateFormat non è thread-safe. –

+17

Solo un piccolo promemoria sul fatto che se l'oggetto SimpleDateFormat è un oggetto con ambito locale (viene creato e utilizzato solo all'interno di un metodo), allora è thread-safe, poiché lo stack su cui risiederà è intrinsecamente "thread-safe" (come appartiene a un singolo thread). – quantum

+5

Per includere l'ora è necessario utilizzare SimpleDateFormat ("MM/gg/aaaa hh: mm") o qualcosa di simile – AverageMarcus

9

Per questo particolare domanda, il suggerimento standard java.text.SimpleDateFormat opere, ma ha l'effetto collaterale che SimpleDateFormatis not thread-safe e può essere fonte di problemi particolarmente brutto dato che sarà corrotto la vostra uscita in scenari multi-threaded, e non avrai eccezioni!

Vorrei fortemente consigliare a Joda per qualcosa di simile. Perché ? È una libreria data/ora molto più ricca e intuitiva per Java rispetto alla libreria corrente (e la base della nuova e aggiornata libreria data/ora Java standard, quindi imparerai presto uno standard API).

+8

Buon avvertimento.Ma molto facile da indirizzare - non condividere le istanze di SimpleDateFormat memorizzandole in ambito di sessione/variabili di istanza/contesto statico e quindi accedendoli da più thread. Basta creare un nuovo SimpleDateFormat() all'interno del metodo e scartarlo dopo l'uso. Questo è infallibile. –

+0

Ovviamente se si desidera archiviare/condividere l'istanza SimpleDateFormat, quindi sincronizzare l'accesso: synchronized (simpleDateFormatInstance) {s = simpleDateFormatInstance.format (myTimeStamp)} OPPURE creare un'estensione personalizzata della classe SDF e farlo automaticamente nel metodo format. –

22

Usa String.Format (o java.util.Formatter):

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

EDIT:
consultare la documentazione di Formatter di sapere che cosa significa TD e TT: cliccare sul java.util.Formatter

La prima ' T 'sta per:

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

e il carattere seguendo tale 'T':

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

Questa è la migliore risposta, secondo me. Nessun oggetto superfluo viene creato solo per convertire il timestamp in una stringa. – Salil

+1

Che cos'è TD e TT in questo codice? –

+1

Ora dovrebbe essere chiaro dove trovare la documentazione e cosa significa –

-8

String timeFrSSHStr = timeFrSSH.toString();

+4

Che cos'è 'timeFrSSH'? –

Problemi correlati