2011-10-31 16 views
6

¿Por qué cuando doy la cadena de fecha de entrada con la zona horaria GMT, SimpleDateFormat lo analiza y genera la zona horaria EET? Java SimpleDateFormat Zona horaria incorrecta después del análisis

public static String DATE_FORMAT="dd MMM yyyy hh:mm:ss z"; 
public static String CURRENT_DATE_STRING ="31 October 2011 11:19:56 GMT"; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(simpleDateFormat.parseObject(CURRENT_DATE_STRING)); 

y la salida es: Jue Dic 31 de 2011 13:19:56 EET en lugar de Jue Dic 31 de 13:19:56 GMT 2011

Respuesta

10

Usted está imprimiendo el resultado de Date.toString(). Un Date no tiene ningún concepto de zona horaria; es solo el número de milisegundos desde la época UTC Unix. Date.toString()always usa la zona horaria predeterminada del sistema.

Tenga en cuenta que no debe estar esperando "Jue Dic 31 de 2011 13:19:56 GMT" dado que usted ha dado un tiempo que especifica una hora GMT de 11, no 13.

Si desea Para usar una zona horaria específica para la impresión, debe usar otro DateFormat para la impresión, en lugar de usar Date.toString(). (Date.toString() sigue causando confusión como esta; es realmente desafortunado.)

+0

Gracias, para una respuesta rápida. – IgorDiy

Cuestiones relacionadas