Soy bastante nuevo en Java y estoy un poco atascado con el uso de SimpleDateFormat
y Calendar
. Tengo un Date-Object y quiero extraer una cadena de fechas GMT como yyyy-MM-dd HH:mm:ss
. Vivo en Alemania y en este momento somos GMT +0200. La hora de mi Date-Object es, por ejemplo, 2011-07-18 13:00:00
. Lo que necesito ahora es 2011-07-18 11:00:00
. La compensación para mi zona horaria se debe calcular automáticamente.Convertir GMT DateTime String
he intentado algo como esto, pero supongo que hay un fallo en alguna parte:
private String toGmtString(Date date){
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone timeZone = TimeZone.getDefault();
Calendar cal = Calendar.getInstance(new SimpleTimeZone(timeZone.getOffset(date.getTime()), "GMT"));
sd.setCalendar(cal);
return sd.format(date);
}
En algunos dispositivos del DateString se devuelve como yo quiero que haga. En otros dispositivos, el desplazamiento no se calcula a la derecha y recibo la fecha y la hora del objeto de fecha de entrada. ¿Me puede dar algunos consejos o consejos? Supongo que mi camino para obtener la zona horaria predeterminada no funciona.
No puedo creer que sea tan fácil, pero por supuesto intentaré eso también. Dame unos minutos por favor ... – Marco
Ok ... Probado ... Usé un objeto de fecha que representa '2011-07-18 13: 34: 27'. Usando la función de fecha predeterminada '.toGMTString()' Recibo '18 Jul 2011 11:43:27 GMT' que es el punto exacto en el tiempo que necesito. Usando mi propia función todavía recibo' 2011-07-18 13: 43: 27' que fue mi problema. Usando la función de Jigar Joshin recibo '2011-07-18 12: 43: 27' que falta 1 hora (verano europeo). Usando la función de Eli Acherkans recibo '2011-07-18 11: 43: 27' que es exactamente lo que quería (Offset incluyendo verano europeo). – Marco
+1 –