¿Cómo formatear una marca de tiempo java.sql para mostrar?


103

¿Cómo puedo formatear una marca de tiempo java.sql a mi gusto? (a una cuerda, con fines de exhibición)

Respuestas:


160

java.sql.Timestampse extiende java.util.Date. Tu puedes hacer:

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

O para incluir también el tiempo:

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

3
Eso funcionará, pero tenga cuidado ya que SimpleDateFormat no es seguro para subprocesos.
Brian Agnew

17
Solo un pequeño recordatorio de que si el objeto SimpleDateFormat es un objeto de ámbito local (se crea y se usa solo dentro de un método), entonces es seguro para subprocesos, ya que la pila en la que residirá es inherentemente "segura para subprocesos" (ya que pertenece a un solo hilo).
Quantum

5
Para incluir el tiempo, deberá usar SimpleDateFormat ("MM / dd / aaaa hh: mm") o algo similar
AverageMarcus

1
para hacerlo completo para quienes lo necesiten, String S = new SimpleDateFormat ("MM / dd / aaaa HH: mm: ss"). format (myTimestamp);
Ishan Liyanage

27

Utilice String.format (o java.util.Formatter ):

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

EDITAR:
consulte la documentación de Formatter para saber qué significa TD y TT: haga clic en java.util.Formatter

La primera 'T' significa:

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

y el carácter que sigue a esa 'T':

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

1
Esta es la mejor respuesta, según yo. No se crea ningún objeto superfluo solo para convertir la marca de tiempo en una cadena.
Salil

1
Ahora debería quedar claro dónde encontrar la documentación y lo que significa
user85421

Muy elegante. Para que quede claro, el formato producido por el ejemplo aquí se ve así 05/30/17 00:39:18.
Noumenon

@Noumenon gracias, ese era el formato "a mi gusto" como exigía la pregunta [:-)
user85421

10

Para esta pregunta en particular, la sugerencia estándar de java.text.SimpleDateFormatfunciona, pero tiene el desafortunado efecto secundario de que SimpleDateFormat no es seguro para subprocesos y puede ser la fuente de problemas particularmente desagradables, ya que corromperá su salida en escenarios de subprocesos múltiples, y usted no lo hará. ¡obtenga excepciones!

Recomiendo encarecidamente mirar a Joda para algo como esto. Por qué ? Es una biblioteca de fecha / hora mucho más rica e intuitiva para Java que la biblioteca actual (y la base de la nueva biblioteca de fecha / hora estándar de Java, por lo que aprenderá una biblioteca que pronto será estándar API).


8
Buen aviso. Pero muy fácil de abordar: no comparta instancias de SimpleDateFormat almacenándolas en el alcance de la sesión / variables de instancia / contexto estático y luego accediendo a ellas desde múltiples subprocesos. Simplemente cree un nuevo SimpleDateFormat () dentro de su método y deséchelo después de usarlo. Eso es seguro para subprocesos.
Glen Best

Por supuesto, si realmente desea almacenar / compartir la instancia de SimpleDateFormat, sincronice el acceso: sincronizado (simpleDateFormatInstance) {s = simpleDateFormatInstance.format (myTimeStamp)} O cree una extensión personalizada de la clase SDF y hágalo automáticamente dentro del método de formato.
Glen Best



-9

Cadena timeFrSSHStr = timeFrSSH.toString ();

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.