2011-04-11 27 views
61

Tengo instancias de GregorianCalendar y necesito utilizar SimpleDateFormat (o tal vez algo que pueda usarse con el calendario pero que proporcione la función #fromat() requerida) para obtener el resultado necesario. Por favor, sugiera alternativas y soluciones permanentes.¿Cómo puedo utilizar SimpleDateFormat con el calendario?

Respuesta

86

Prueba esto: respuesta

Calendar cal = new GregorianCalendar(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
dateFormat.setTimeZone(cal.getTimeZone()); 
System.out.println(dateFormat.format(cal.getTime())); 
+0

Agregado el paso que falta de la respuesta de la JamesKingston. ¡Gracias! – janhink

+1

¿Cuál es el efecto de no agregar la zona horaria? – kamaci

+2

@kamaci vea los comentarios bajo la respuesta de JamesKingston. Solo importa si tiene un objeto de calendario basado en una zona horaria que es diferente de la zona horaria predeterminada del sistema y desea que se imprima en la zona horaria de ese calendario. Si no configura la zona horaria, usará la zona horaria predeterminada del sistema. Si es igual a la zona horaria del calendario, establecer la zona horaria no tiene importancia. Tenga en cuenta que la respuesta de James Kingston también funciona: decir a dateFormat qué calendario usar significa que sabrá usar la zona horaria del calendario. – ToolmakerSteve

3

Calendar.getTime() devuelve una fecha que se puede utilizar con SimpleDateFormat.

3

Simplemente llame al calendar.getTime() y pase el objeto resultante Date al método format.

31

de Equi Falta un paso en

Calendar cal = new GregorianCalendar(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
#---- This uses the provided calendar for the output ----- 
dateFormat.setCalendar(cal); 
System.out.println(dateFormat.format(cal.getTime())); 
+1

+1, porque la respuesta es la más completa. Sin este método, la llamada al calendario predeterminado se usa para formatear. (Sin embargo, la pregunta realmente no especificaba qué calendario debería usarse para formatear.) – Robert

+2

Para este caso no importa, pero si desea hacer cosas como: 'cal.setTimeZone (TimeZone.getTimeZone (" GMT ")); ' ' cal.setTime (new Date (record.getMillis())); ' parece ser. – JamesKingston

+3

Disculpe, ¿por qué alguien tendría que establecer un calendario si solo necesita una salida formateada? –

Cuestiones relacionadas