2012-01-05 26 views
14

Estoy usando el siguiente código para obtener la fecha en formato "dd/MM/aaaa HH: mm: ss.SS".quiere la fecha y hora actual en el formato "dd/MM/aaaa HH: mm: ss.SS"

import java.text.SimpleDateFormat; 
    import java.util.Calendar; 
    import java.util.Date; 

    public class DateAndTime{ 

    public static void main(String[] args)throws Exception{ 

    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SS"); 
    String strDate = sdf.format(cal.getTime()); 
    System.out.println("Current date in String Format: "+strDate); 

    SimpleDateFormat sdf1 = new SimpleDateFormat(); 
    sdf1.applyPattern("dd/MM/yyyy HH:mm:ss.SS"); 
    Date date = sdf1.parse(strDate); 
    System.out.println("Current date in Date Format: "+date); 

} 
} 

y estoy consiguiendo siguiente salida

Current date in String Format: 05/01/2012 21:10:17.287 
    Current date in Date Format: Thu Jan 05 21:10:17 IST 2012 

Se le sugiere lo que debería hacer para mostrar la fecha en la misma cadena de formato (dd/mm/aaaa hh: mm: ss.ss) quiero decir, siguiente resultado:

Current date in String Format: 05/01/2012 21:10:17.287 
    Current date in Date Format: 05/01/2012 21:10:17.287 

sugerir amablemente

+1

cuando un objeto System.out.println fecha, el método toString de la fecha se llama. Debería crear su propia subclase de Fecha y sobrescribir el método toString para generar la Fecha de la forma que desee. –

+1

No está muy claro qué es lo que quiere, pero comprenda esto: 'Date.toString()' devuelve el formato predeterminado, no se puede hacer nada al respecto. Tienes que usar 'SimpleDateFormat' para formatear el resultado de la cadena. – Viruzzo

+0

¿Quiere decir '.SSS' por milisegundos? Java no admite 1/100 de segundo. Si usa '.SS', muchos no se comportan como espera. –

Respuesta

15

no se puede - porque estás llamando Date.toString() que será siempre incluye la zona horaria del sistema si está en el formato de fecha predeterminado para la configuración regional predeterminada. El valor Date en sí mismo no tiene ningún concepto de formato. Si desea formatearlo de una manera particular, use SimpleDateFormat.format() ... usar Date.toString() es casi siempre una mala idea.

12

El siguiente código proporciona la salida esperada. ¿Es eso lo que quieres?

import java.util.Calendar; 
import java.util.Date; 

public class DateAndTime { 

    public static void main(String[] args) throws Exception { 
     Calendar cal = Calendar.getInstance(); 
     SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SS"); 
     String strDate = sdf.format(cal.getTime()); 
     System.out.println("Current date in String Format: " + strDate); 

     SimpleDateFormat sdf1 = new SimpleDateFormat(); 
     sdf1.applyPattern("dd/MM/yyyy HH:mm:ss.SS"); 
     Date date = sdf1.parse(strDate); 
     String string=sdf1.format(date); 
     System.out.println("Current date in Date Format: " + string); 

    } 
} 
3

Uso:

System.out.println("Current date in Date Format: " + sdf.format(date)); 
1

La salida en su primera Printline está usando su formateador. La salida en su segundo (la fecha creada a partir de su cadena analizada) se envía usando Date # toString, que formatea de acuerdo con sus propias reglas. Es decir, no estás usando un formateador.

Las reglas son de acuerdo con lo que está viendo y se describen aquí: http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#toString()

12

SimpleDateFormat

sdf=new SimpleDateFormat("dd/MM/YYYY hh:mm:ss"); 
String dateString=sdf.format(date); 

Se dará la salida 28/09/2013 09:57:19 como se esperaba.

For complete program click here

+0

java.util.Date temp = new SimpleDateFormat ("dd/mm/aaaa hh: mm: ss", Locale.US) .parse (ackDateTimeString); funcionó para mí finalmente! –

Cuestiones relacionadas