Come formare un Timestamp java.sql di mio gradimento? (In una stringa, per scopi di visualizzazione)Come formattare un timestamp java.sql per la visualizzazione?
risposta
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);
Se stai usando MySQL e desidera che il database stesso per eseguire la conversione, usare questo:
Se si preferisce formattare utilizzando Java, l'uso questo:
SimpleDateFormat dateFormat = new SimpleDateFormat("M/dd/yyyy");
dateFormat.format(new Date());
Utilizzare un DateFormat
. In un'applicazione internazionalizzata, utilizzare il formato fornito da getInstance
. Se si desidera controllare in modo esplicito il formato, creare un nuovo SimpleDateFormat
.
Per questo particolare domanda, il suggerimento standard java.text.SimpleDateFormat
opere, ma ha l'effetto collaterale che SimpleDateFormat
is 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).
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. –
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. –
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".
Questa è la migliore risposta, secondo me. Nessun oggetto superfluo viene creato solo per convertire il timestamp in una stringa. – Salil
Che cos'è TD e TT in questo codice? –
Ora dovrebbe essere chiaro dove trovare la documentazione e cosa significa –
String timeFrSSHStr = timeFrSSH.toString();
Che cos'è 'timeFrSSH'? –
Funzionerà, ma attenzione poiché SimpleDateFormat non è thread-safe. –
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
Per includere l'ora è necessario utilizzare SimpleDateFormat ("MM/gg/aaaa hh: mm") o qualcosa di simile – AverageMarcus