2008-09-19 11 views
10

¿Cuál es la mejor forma de generar una fecha actual en Java?Genera una marca de fecha actual en Java

AAAA-MM-DD: hh-mm-ss

+0

"cuando no se utiliza una base de datos"? ¿¿Qué?? ¿Normalmente consulta una base de datos para recuperar la hora actual? –

+0

¿Desea una Cadena en ese formato o algún tipo de objeto de marca de tiempo/fecha? – sblundy

+0

JohnMilikan: Inefficient tho '' tis, puede seleccionar la fecha actual de sysibm.sysdummy1 (esa es la variante de DB2, no puedo recordar cómo se llaman las tablas ficticias de Oracles). Sin embargo, tienes razón, esa no es la forma en que lo haría. – paxdiablo

Respuesta

26

Uso del JDK estándar, tendrá que utilizar java.text.SimpleDateFormat

Date myDate = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); 
String myDateString = sdf.format(myDate); 

Sin embargo, si usted tiene la opción de utilizar el paquete de Apache Commons Lang, puede utilizar org.apache.commons. lang.time.FastDateFormat

Date myDate = new Date(); 
FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd:HH-mm-ss"); 
String myDateString = fdf.format(myDate); 

FastDateFormat tiene la ventaja de ser seguro para subprocesos, por lo que puede utilizar una única instancia en toda la aplicación. Es estrictamente para las fechas de formato y no es compatible con el análisis como SimpleDateFormat hace en el siguiente ejemplo:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); 
Date yourDate = sdf.parse("2008-09-18:22-03-15"); 
+1

A partir de 3.2 FastDateFormat admite el análisis :) – Ross

8
Date d = new Date(); 
String formatted = new SimpleDateFormat ("yyyy-MM-dd:HH-mm-ss").format (d); 
System.out.println (formatted); 
+0

En este ejemplo falta la palabra clave "nueva" antes de SimpleDateFormat ("aaaa ... –

+0

@jt gracias, fijo –

+0

No me gustan las secciones de código que no tienen las importaciones necesarias. – paxdiablo

0

SimpleDateFormatter es lo que quiere.

1

También hay

long timestamp = System.currentTimeMillis() 

que es lo new Date() (@John Millikin) utiliza internamente. Una vez que tenga eso, puede formatearlo como desee.

0

Creo que debe ser un poco más claro en su pregunta. En particular, ¿qué tipo de datos desea al final del proceso? ¿Una cuerda?

0
final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd:hh-mm-ss"); 

formatter.format(new Date()); 

El JavaDoc for SimpleDateFormat proporciona información sobre cadenas de patrones de fecha y hora.

Cuestiones relacionadas