2009-07-20 12 views

Respuesta

135

java.sql.Timestamp extiende java.util.Date. Quiso decir algo como:

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

Incluir tiempo:

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

Eso funcionará, pero ten cuidado ya que SimpleDateFormat no es seguro para subprocesos. –

+17

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

+5

Para incluir el tiempo, necesitará utilizar SimpleDateFormat ("MM/dd/aaaa hh: mm") o algo similar – AverageMarcus

9

Para esta pregunta en particular, la propuesta de norma java.text.SimpleDateFormat obras, pero tiene el efecto secundario desafortunado que SimpleDateFormatis not thread-safe y pueden ser el origen de problemas particularmente desagradables, ya que va corromper su producción en escenarios multi-hilo, y ¡no tendrás excepciones!

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

+8

Buena advertencia.Pero es muy fácil de abordar: no comparta las instancias de SimpleDateFormat almacenándolas en el ámbito de sesión/variables de instancia/contexto estático y luego accediendo a ellas desde múltiples hilos. Simplemente cree un nuevo SimpleDateFormat() dentro de su método y deséchelo después de su uso. Eso es threadsafe –

+0

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

22

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

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

EDIT:
consulte la documentación del formateador saber qué significa DT 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 personaje siguiente al '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

¿Qué es TD y TT en este código? –

+1

Ahora debe quedar claro dónde encontrar la documentación y qué significa –

-8

cadena timeFrSSHStr = timeFrSSH.toString();

+4

¿Qué es 'timeFrSSH'? –

Cuestiones relacionadas