2011-06-30 12 views
5

estoy frente a un resultado extraño al formatear milisegundos a un formato SimpleDate:milisegundos formato a formato SimpleDate

de salida es:

Start date time: 11/06/30 09:45:48:970 
    End date time: 11/06/30 09:45:52:831 
    Execution time: 01:00:03:861 

Guión:

long dateTimeStart = System.currentTimeMillis();  
    // some script execution here 
    long dateTimeEnd = System.currentTimeMillis(); 

    "Start date time: " + GlobalUtilities.getDate(dateTimeStart, "yy/MM/dd hh:mm:ss:SSS"); 
    "End date time: " + GlobalUtilities.getDate(dateTimeEnd, "yy/MM/dd hh:mm:ss:SSS"); 
    "Execution time: " + GlobalUtilities.getDate((dateTimeEnd - dateTimeStart), "hh:mm:ss:SSS"); 

Método:

public static String getDate(long milliseconds, String format) 
    { 
     SimpleDateFormat sdf = new SimpleDateFormat(format); 
     return sdf.format(milliseconds); 
    } 

Cualquier idea ¿Por qué el valor del tiempo de ejecución es tan alto? Debe ser 00: 00: 03: 861, no 01: 00: 03: 861

Gracias

Respuesta

1

El tiempo de ejecución está apagado porque el constructor Fecha tarda mucho especificando el número de milisegundos desde 1970-01- 01.

+0

¿Y cómo puedo solucionarlo? – user706058

+2

¡Aquí hay otra respuesta de stackoverflow con algunas ideas realmente agradables! http://stackoverflow.com/questions/625433/how-to-convert-milliseconds-to-x-mins-x-seconds-in-java –

+0

Además, como nota al margen, realmente puedo recomendar la API de JodaTime cuando se trata de con fechas en Java. Es realmente mucho mejor que las fechas de Java incorporadas. http://joda-time.sourceforge.net/ –

3

porque convierte la diferencia de tiempo en la fecha. En detalle, esto es exactamente lo que sucede:

  1. SimpleDateFormat.format (milisegundos de largo) calcula la fecha: Unix nacimiento Time + milisegundos.
  2. Esta vez también se ajusta con la diferencia horaria de GMT.
  3. Con estas dos informaciones, obtiene el resultado extraño. Para verificar la información anterior, puede agregar día, mes y año a la fecha.

Desafortunadamente, puede solucionarlo convirtiendo manualmente su tiempo.