Autor Tema: Problema fechas  (Leído 5827 veces)

Tino

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Problema fechas
« en: 18 de Diciembre 2014, 23:09 »
Hola.
Tengo un problema con un metodo que he realzado sobre calculo de diferencias de fechas. Todo va bien pero a la hora de visualizar el resultado este es optimo unos meses y otros no: Enero ,febrero, abril,junio, agosto , setiembre y noviembre me da correcto pero el resto: marzo se me atrasa dos dias el resutado, mayo, julio,octubre y diciembre lo hace un dia. No se donde puede estar el problema-.
El metodo es el siguiente:
Código: [Seleccionar]
public List<String>  diasdeTrabajo(){
   
int GUARDIACUATRO1 =16071;
SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy", new Locale("es_ES"));
Calendar cal = GregorianCalendar.getInstance();
      Date date = null;

  for (int i=0; i< dias.size() ; i++){
try {
date = formato.parse(dias.get(i));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.setTime(date);
Long dia= cal.getTimeInMillis();
dia = dia/(1000*60*60*24);
dia =dia-GUARDIACUATRO1 ;
int seg2 = (int) (dia % 8);
    if(seg2 ==1 || seg2 == 3|| seg2== 4){
list.add(dias.get(i)+"-CURRO");
    }else{ 
   list.add(dias.get(i)+"-WHITE");
}
}
    return list;
                    }
 
la variable dias es un arrayList con los dias del mes en formato dd-MM-yy.
La constante son los dias que hay hasta el 1-1-2014
y el return es otro arrayList con los dias que curro en el mes.
Ayuda

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Problema fechas
« Respuesta #1 en: 19 de Diciembre 2014, 08:26 »
Hola Tino, he visto este post así como el de partida https://www.aprenderaprogramar.com/foros/index.php?topic=1093.0

El problema que veo es la complejidad para compilar y probar. Nosotros lo que solemos recomendar es hacer un pequeño programa donde sólo pongas a prueba el método. De esa manera podremos compilarlo nosotros y hacerte sugerencias. Cuando se trata de problemas que son demasiado extensos o que no se pueden compilar puede resultar demasiado complicado encontrar dónde está un fallo.

Aquí te muestro un ejemplo de un mensaje con una consulta que se puede compilar: https://www.aprenderaprogramar.com/foros/index.php?topic=1521.0

Aunque el método que estás probando vaya destinado a un gran programa, la idea sería crear un pequeño programa para probarlo, sabiendo cuál debería ser el resultado que debe devolver el método, y así buscar dónde está el error.

Salu2!

Tino

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Re:Problema fechas
« Respuesta #2 en: 20 de Diciembre 2014, 15:52 »
Hola. Muchas gracias por dedicarme tu tiempo. El problema es que el método esta incluido  en un proyecto de calendario. Es decir el fallo se ve en la vista del calendario.  O puedo adjuntar el archivo por que es mayor de 179 kb. Hay alguna forma poderte llegar el archivo?. Con el verías el fallo que te digo. Porque lo que me desorienta es que el cálculo esta bien hecho pero en esos meses se me  adelanta un día. Es como si la vista y los cálculos tuvieran mala sincronizados.  Hubiera un mes de diferencia.  A que puede ser debido? Por favor como puedo haceros llegar el archivo.?
Gracias.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Problema fechas
« Respuesta #3 en: 20 de Diciembre 2014, 16:33 »
Hola, en mi caso para poder revisar el código tendría que ser código compilable Java SE. El archivo puedes subirlo como se indica aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Como se indica ahí, si es demasiado grande puedes subirlo a dropbox o similar. Salu2

Tino

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Re:Problema fechas
« Respuesta #4 en: 21 de Diciembre 2014, 00:58 »
Hola.
Intentare poner para compartii un enlace del proyecto, yo lo estoy haciendo con eclipse.
Intentare subir tambien la apk para poder instalar en movil.
https://www.dropbox.com/s/5s7qur50duwaupm/MyCalendarActivity.zip?dl=0  este esel proyecto
https://www.dropbox.com/s/rb47otxajj0ioqp/MyCalendarActivity.apk?dl=0 y este es la apk-
Espero que pueda servir. Gracias

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Problema fechas
« Respuesta #5 en: 21 de Diciembre 2014, 13:44 »
Hola, me he descargado el proyecto pero al intentar compilar me salta un error en la línea import android.annotation.SuppressLint; de la clase MyCalendarActivity.java. El mensaje de error es package android.annotation does not exist. Por lo que yo interpreto no se trata de un proyecto java, sino de un proyecto para android ¿? Yo compilo con Java SE, no sé si faltan paquetes o si el proyecto no es compilable en Java. De todas formas si se trata de analizar un problema en un método, no haría falta el proyecto completo, sino simplemente un código de test para probar ese método.

Salu2

Tino

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Re:Problema fechas
« Respuesta #6 en: 18 de Enero 2015, 00:58 »
Hola Ogramar.
Feliz año. No he podido contestar antes. Disculpa si no quedo claro que era un proyecto android. Lo estoy haciendo con eclipse, lo que dices de codigo de test no se como se hace. Tampoco se donde me pueden ayudar para android. Si tu conoces algun sitio te lo agradeceria. De todas formas gracias por el tiempo que me has dedicado.
Un saludo

Tino

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Re:Problema fechas
« Respuesta #7 en: 02 de Marzo 2015, 21:26 »
Hola. Han pasado muchos dias y he estado fuera , voy a tratar de retomar el proyecto.
He investigado por mi cuenta y el metodo donde calculo los dias de trabajo da errores.
He creado un proyecto den java con solo el metodo:
Código: [Seleccionar]
public class Calendario {

/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy");
  GregorianCalendar cal = new GregorianCalendar();
   
  int año = 2014;
  int mes = 00;
  int diaa = 01; // 
  Calendar calendar = new GregorianCalendar(año,mes,diaa);
  long fecha = calendar.getTimeInMillis();
  String dias = "01-03-2015";
         Date date = null;
  date = formato.parse(dias );
  cal.setTime(date);
    long dia = cal.getTimeInMillis();
  dia =dia-fecha;
  dia=dia/(1000*60*60*24);
  int seg2 = (int) (dia % 8);
      if(seg2 ==1 || seg2 == 3|| seg2== 4){
  System.out.print("Trabajo el:"+ dia);
      }else{ 
    System.out.print("No trabajo el dia:"+ dia);
  }
}
}
Las variables año, mes y diaa son el inicio del calculo: 1 de enero de 2014
En el String dia voy introduciendo fechas a ver que resultado me da.
Te comentaba que me daba buenos resultados un mes si y otro no....
Y me aparecen cosas muy estrañas:
Cuando introduzco el "29-03-2015" me da 452 y trabajo. Pero al meter "30-03-2015" me da tambien 452 y obviamente trabajo.

Luego hice la prueba de 28 de febrero es decir "28-01-2015" me da 392 y no trabajo.

Meto el dia siguiente 01-02-2015 y me da 396 y trabajo. Es decir que el "01" no es febrero sino un mes de 31 dias porque cuenta el 29,30,31.

Luego el 31-02-2015   me da 426 y el 01-03-2015  me da 424 dos dias menos.
A que se debe esto?  Me falta codigo?. Como puedo arregrarlo?
Gracias de nuevo.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Problema fechas
« Respuesta #8 en: 03 de Marzo 2015, 13:31 »
Hilo de foro duplicado en https://www.aprenderaprogramar.com/foros/index.php?topic=1093.0. Cerramos este hilo. Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".