Android - Diferencia en días entre fecha actual y fecha anterior.

 
Vista:
sin imagen de perfil

Diferencia en días entre fecha actual y fecha anterior.

Publicado por Pablo (3 intervenciones) el 04/09/2016 15:07:51
Buenas, estoy haciendo una aplicación y necesito almacenar en la variable diferencia la diferencia en días entre la fecha que ha dado el usuario y la actual. Se ha almacenado: n2= días || n3= mes || n4= año. Por el usuario en una primera actividad. Os dejo una imagen del código actual. Solo me gustaría saber un código para guardar en diferencia el resultado en días entre la fecha dada por el usuario y la actual ( Cualquier día en el que el usuario se meta en la aplicación).



514bcf0fd359220e0cea34dabfc13441
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Diferencia en días entre fecha actual y fecha anterior.

Publicado por Francisco (358 intervenciones) el 04/09/2016 23:17:33
En vez de subir una foto del codigo siempre es mejor copiar y pegar el codigo en el cuadro de texto del foro
podrtemos ayudarte mejor en las respuestas.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Calendar ahora=Calendar.getInstance();
Calendar fechax= Calendar.getInstance();
int ano=fechax.get(Calendar.YEAR); // coge el valor dela año del edittest
int mes =fechax.get(Calendar.MONTH);// coge el valor dela mes del edittest
int dia=fechax.get(Calendar.DAY_OF_MONTH);// coge el valor del dia del edittest
 
fechax.set(ano, mes, dia); //Aqui actaalizas el calendario a la fecha de los edittext
 
long ahora_milisegundos=  ahora.getTimeInMillis();
long fecha_nueva_milisegundos=  fechax.getTimeInMillis();
 
long milisegundos=ahora_milisegundos -fecha_nueva_milisegundos;
long segundos= (milisegundos /1000);
long minutos =milisegundos/ (60 * 1000);
long horas=(milisegundos /(60 * 60 * 1000));
long dias=(milisegundos /(60 * 60 * 1000*24));
 
 
texto.setText(" milisegundos  "+ milisegundos   + " segundos  " + segundos + " minutos " + minutos + "  horas  "+ horas + " dias " + dias);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Diferencia en días entre fecha actual y fecha anterior.

Publicado por Pablo (3 intervenciones) el 04/09/2016 23:45:30
Tengo hecho esto, y le paso el valor días a la siguiente actividad, pero cuando voy a abrir la aplicación se me detiene siempre, creo que no pasa bien los datos o no se como hacerlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public void ejecutar_resultado(View view){
 
        EditText cuadro1=(EditText)findViewById(R.id.exp_totalR);
        EditText cuadro5=(EditText)findViewById(R.id.levelR);
 
        int n1=Integer.parseInt(cuadro1.getText().toString());
        int n5=Integer.parseInt(cuadro5.getText().toString());
 
 
        Calendar ahora=Calendar.getInstance();
        Calendar fechax= Calendar.getInstance();
        int ano=fechax.get(Calendar.YEAR); // coge el valor dela año del edittest
        int mes =fechax.get(Calendar.MONTH);// coge el valor dela mes del edittest
        int dia=fechax.get(Calendar.DAY_OF_MONTH);// coge el valor del dia del edittest
 
        fechax.set(ano, mes, dia); //Aqui actaalizas el calendario a la fecha de los edittext
 
        long ahora_milisegundos= ahora.getTimeInMillis();
        long fecha_nueva_milisegundos= fechax.getTimeInMillis();
 
        long milisegundos=ahora_milisegundos -fecha_nueva_milisegundos;
        long dias=(milisegundos /(60 * 60 * 1000*24));
 
 
        //texto.setText(" milisegundos "+ milisegundos + " segundos " + segundos + " minutos " + minutos + " horas "+ horas + " dias " + dias);
 
 
        Intent i=new Intent(this, Result.class);
 
        i.putExtra("numero1",n1);
        i.putExtra("numero2",dias);
        i.putExtra("numero3",n5);
 
        startActivity(i);
 
    }
 
}
 
//SEGUNDA ACTIVIDAD
 
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.resultado);
 
        Bundle datos=getIntent().getExtras();
 
        int num1=datos.getInt("numero1");
        int num2=datos.getInt("numero2");
        int num3=datos.getInt("numero3");
 
        int tiempoTotal=(num2*num3)/num1;
        int expDiaria=num1/num2;
 
        TextView textoResultado1=(TextView)findViewById(R.id.exp_diaria);
 
        textoResultado1.setText("Al día consigues " + expDiaria + " de experiencia.");
 
        TextView textoResultado2=(TextView)findViewById(R.id.tiempo);
 
        textoResultado2.setText("Vas a tardar en llegar: " + tiempoTotal + " días.");
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 112
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Diferencia en días entre fecha actual y fecha anterior.

Publicado por Yamil Bracho (100 intervenciones) el 05/09/2016 01:22:48
En la segunda actividad haces algo como :

int num1 = datos.getIntExtra("numero1", 0);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Diferencia en días entre fecha actual y fecha anterior.

Publicado por Francisco (358 intervenciones) el 05/09/2016 12:38:05
No se lo que quieres hacer pero si divides una dividsion por cero te dara error

int tiempoTotal=(num2*num3)/num1;
int expDiaria=num1/num2;

si suprimes esta lineas el error no salta

que es el tiempototal
que es exoDiaria

que datos son num1,num2,num3 si algun valor es cero te dara error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Diferencia en días entre fecha actual y fecha anterior.

Publicado por Pablo (3 intervenciones) el 05/09/2016 16:29:44
ahí se almacenan los datos que tienen que salir en la segunda actividad. El problema salta aunque yo no ponga nada que contenga un 0.

El único problema es que no se almacernar en una variable la diferencia en días entre una fecha y la actual para luego pasársela a num2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 444
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Diferencia en días entre fecha actual y fecha anterior.

Publicado por juanki (253 intervenciones) el 05/09/2016 16:52:40
Hola

Se me ocurre que puedes usar el método getTimeInMillis de la clase Calendar. Este método te devuelve en milisegundos la fecha que tenga.

Por tanto puedes crear dos calendar, cada uno con la fecha que quieres obtener la diferencia, los restas y ya tienes la diferencia en milisegundos, la multiplicas por los milisegundos de un día y obtienes los días. Supongo que debe funcionar.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar