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.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

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 )

Imagen de osalgado999

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

log.info("reverso: " + lIdTerminal + " " + forma.getCantidad() + " " +
                                         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

public ReversoForm() {
                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:

DateFormat sdf = new SimpleDateFormat( unStringConElFormatoCorrecto ); // ¿Cual será el formato correcto? Depende de tu entrada
return sdf.parse( getLista().toString() );

En fin, sigue intentando y cuando encuentres algo más concreto posteas de nuevo.

Imagen de neko069

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:

    TimeZone tz = new SimpleTimeZone( 0 , "ID");
    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....

Imagen de osalgado999

Gracias por tus opiniones me

Gracias por tus opiniones me a servir mucho. tu comentario.

Imagen de osalgado999

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.