¿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.