Problemas con fechas
Buenos Días
Comunidad.
Tengo este problema.
Alguien sabe porque cuando mando la fecha de hoy sobre el horario de greenwich me sale un dia anteror ustedes me podrían decir el porque si quien el codigo de como lo mando nada mas diganme
Bueno Feliz año.
- Inicie sesión o regístrese para enviar comentarios
Suponiendo que estás en
Suponiendo que estás en México , el huso horario ( timezone en inglés ) es GMT-6.
Si tu pones tu hora como 05:00 de México, pero como timezone usas GMT, en realidad estás poniendo las 23:00 de ayer en GMT-6
Algo así va la onda. :P
Por que no posteas un pedazo de código donde se represente el problema? ( no todo tu código, solo algo sencillo que podamos leer )
Gracias por el
Gracias por el cometario.
Esto es parte de mi codigo cuando mado estos datos me tiene que sali la fecha de hoy pero no me sale la un dia antes y la verdad no que hacer
forma.getXMLfechaHora().toGregorianCalendar().getTime() + " " +
forma.getTrack2() + " " + Long.parseLong(forma.getReferencia()) + " " +
//forma.getAutorizacion() + " " + // Codigo de PRODUCCION
aut + " " + //Codigo de PRUEBAS
forma.getFolio() + " " + forma.getXMLfechaServidor().toGregorianCalendar().getTime() + " " +
forma.getPosEntryMode());
log.info("Realizando reverso...");
Respuesta res = service.reverso1(lIdTerminal,
forma.getCantidad(),
forma.getXMLfechaHora(),
forma.getTrack2(),
Long.parseLong(forma.getReferencia()),
//forma.getAutorizacion(),
aut, //Codigo de PRUEBAS
Long.parseLong(forma.getFolio()),
forma.getXMLfechaServidor(),
forma.getPosEntryMode());
y segun yo tengo bien mi otra clase en donde hago mi relajo con las fechas
try {
this.df = DatatypeFactory.newInstance();
this.XMLfechaHora = df.newXMLGregorianCalendar();
this.XMLfechaServidor = df.newXMLGregorianCalendar();
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
}
}
public int getAnio() { return anio; }
public void setAnio(int anio) { this.anio = anio; }
public int getDia() { return dia; }
public void setDia(int dia) { this.dia = dia; }
public int getHr() { return hr; }
public void setHr(int hr) { this.hr = hr; }
public int getMes() { return mes; }
public void setMes(int mes) { this.mes = mes; }
public int getMin() { return min; }
public void setMin(int min) { this.min = min; }
public int getSeg() { return seg; }
public void setSeg(int seg) { this.seg = seg; }
public ActionErrors validate(ActionMapping map, HttpServletRequest req) {
List<String> lista = getLista();
terminal =lista.get(0).trim();
if(lista.get(1).trim().contains("."))
cantidad = Float.parseFloat(lista.get(1).trim());
else {
if(Integer.parseInt(lista.get(1).trim()) < 100) {
if(Integer.parseInt(lista.get(1).trim()) < 10)
cantidad = Float.parseFloat("0.0"+lista.get(1).trim());
else
cantidad = Float.parseFloat("0."+lista.get(1).trim());
} else {
cantidad = Float.parseFloat(lista.get(1).trim().substring(0, lista.get(1).trim().length()-2) + "." + lista.get(1).trim().substring(lista.get(1).trim().length()-2));
}
}
fechaHora = lista.get(2).trim();
track2 = lista.get(3).trim();
referencia = lista.get(4).trim();
autorizacion = lista.get(5).trim();
log.info("Autorizacion 210: " + autorizacion);
folio = lista.get(6).trim();
fechaServidor = lista.get(7).trim();
log.info("*** fechaServidor: " + fechaServidor);
String meridiano = fechaServidor.substring(17, 19);
int horaServidor = Integer.parseInt(fechaServidor.substring(8,10));
log.info("*** horaServidor: " + horaServidor);
if(meridiano.equals("PM") && horaServidor != 12)
horaServidor = horaServidor + 12;
// Se obtiene la hora estandar de GREENWICH
Calendar cal = new GregorianCalendar();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
int temp = cal.get(Calendar.HOUR_OF_DAY); // 0..23
//int temp = horaServidor + 6;
/*if(temp >= 24)
temp = temp - 24;*/
log.info("*** Hora GREENWICH: " + temp);
bueno ahi esta que espero que medigas donde puedo tener el error muchas gracias
No pues está cañon, por que
No pues está un tanto difícil, por que al parecer ni siquiera entiendes cual es el código relevante para tu problema. Posteaste código que no tiene nada que ver.
Te sugiero que intentes aislando el problema para que puedas entenderlo mejor. Mueve le un poco por aquí y por allá y crea un programa chiquito donde puedas confirmar tus creencias ( puedes creer que un metodo "blah" te regresa X y en realidad te está devolviendo Y )
Si quieres resolver tu problema desde todo el conjunto de código, te vas a tardar mucho más y vas a estarte dando de topes.
Por ejemplo ahí en tu código dices algo de "getLista" pero no dices que contiene esa lista. Quizá estas queriendo resolver algo que ya está resuelto.
Échale un ojo a SimpleDateFormat:
DateFormat sdf = new SimpleDateFormat("dd MMMM yyyy"); // parsea por ejemplo 1 enero 2011
Date aDate = sdf.parse( someString );
Tengo la impresión que podria ser tan sencillo como:
return sdf.parse( getLista().toString() );
En fin, sigue intentando y cuando encuentres algo más concreto posteas de nuevo.
En la
En la línea
cal.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
en lugar de GTM como argumento, podrías usar "Etc/GTM-6", quedando así
cal.setTimeZone( TimeZone.getTimeZone( "Etc/GTM-6") );
Yo no he tenido problemas con eso de los horarios (excepto mi horario de entrada) pero basándome en lo que te dice Oscar, bien podría ser la solución...
¿Cómo saqué el huso horario?, a bueno, pues con:
String[] availableID = tz.getAvailableIDs();
for(String string : availableID){
System.out.println(string);
}
Suerte!!!
Por cierto, mete tu código entre los tags < code > y < / code > para que se vea bien el código....
Gracias por tus opiniones me
Gracias por tus opiniones me a servir mucho. tu comentario.
Gracias Neko. y bueno sobre
Gracias Nekp.
y bueno sobre el código lo que tengo que hacer es que yo mando la fecha de hoy y cuando la mando a otro proceso cuando envio dato e incluyendo la fecha cuando me la regresa un dia antes no me manda la fecha presente. osea la de hoy .
Pro bueno voy a ver encuento algo para que fecha de y no la un anterior.