Edad en dias

Hola

Mi duda es la siguiente y espero puedan ayudarme

Estoy creando un sistema para un consultorio de pediatria. Pero tengo un problema al calcular la edad, por ejemplo si es un recien nacido como saber cuantos dias tiene o meses de un bebe o en su caso un niño la edad.

Espero y puedan ayudarme

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.
Imagen de ezamudio

jodatime

Ya revisaste Jodatime? Estoy casi seguro que incluye algo de intervalos de tiempo para que cuando saques la diferencia entre dos fechas te la pueda dar en días, horas, segundos, etc.

En todo caso para saber en días es fácil; la fecha de hoy, sin hora, menos la fecha de nacimiento, sin hora, el resultado lo divides entre 86400000 que son los milisegundos que tiene un día (24 horas * 60 minutos * 60 segundos *1000) y eso te da los días transcurridos de una fecha a otra.

gracias por responder

gracias por responder jodatime... pero he estado pensado en usa un selector de casos y despues imprimir el valor en un jtextfield. he usado calendar pero aun no me ha funcionado muy bien

Imagen de neko069

O_o

Creo que a lo que se refiere @ezamudio es que revises ésta liga que es una biblioteca llamada Joda Time, el cual te va a simplificar muchísimo el manejo de fechas...

Imagen de beto.bateria

Con calendar se puede.

Con calendar se puede.

Hola gracias por sus

Hola gracias por sus sugerencias de casualidad no me podrian mostrar un poco de codigo porque la verdad no tengo mucha idea de como realizarlo

Imagen de beto.bateria

Este es el algoritmo Entras

Este es el algoritmo

Entras a Google.
Pones en el buscador "java calendar".
buscas algo que te sirva en las direcciones que encontro el buscador.
Imagen de darklatiz

Código...

Pues lo difícil no son los días eso ya te dijo ezamudio cómo resolverlo, aquí lo hago de dos formas, aunque considero qué la más directa es por el  DateFormat... aquí metes una fecha de forma normal (11/09/1980 -> 11 Septiembre de 1980), por por el otro método tienes que restarle uno a los meses ya qué al inicializar el calendario estos inician desde 0 (Enero) y llegan hasta el 11 (Diciembre), pero bueno esto sólo soluciona los días, para las semanas y meses pues tendrás qué hacer algo más, te recomiendo qué revises la documentación GregorianCalendar... y Calendar....

Por otro lado no hay validaciones, entonces si introduces algún dato invalido pues el programa reventará con una excepción, así qué sí te sirve pues mejoralo, este código está muy en pañales...

Scanner input=new Scanner(System.in);
               
                System.out.println("Introduce fecha nacimiento [dd/MM/yyyy]: ");
                String fechaNacimiento = input.nextLine();
               
                DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, new Locale("es", "MX"));
                Date fachaFromString = formatter.parse(fechaNacimiento);
               
                System.out.println ("Enter anio nacimiento (yyyy): ");
                int anio = Integer.parseInt(input.nextLine());
               
                System.out.println ("Enter mes nacimiento (mm) [Enero -> 00, Febrero -> 01, Marzo -> 02....Diciembre->11]: ");
                int mes = Integer.parseInt(input.nextLine());
               
                System.out.print ("Enter dia nacimieto (dd): ");
                int dia = Integer.parseInt(input.nextLine());
               

                Calendar now = new GregorianCalendar();
                Calendar nac = new GregorianCalendar(anio, mes, dia);
                Calendar nowSinHora = new GregorianCalendar(now.get(GregorianCalendar.YEAR), now.get(GregorianCalendar.MONTH), now.get(GregorianCalendar.DATE));
               
                long anios = now.get(GregorianCalendar.YEAR) - nac.get(GregorianCalendar.YEAR);
                System.out.println("Anios: " + anios);
               
                long diff = nowSinHora.getTime().getTime() - nac.getTime().getTime();
               
                long diffFromString = nowSinHora.getTime().getTime() - fachaFromString.getTime();
                System.out.println("Ms_: " + diff);
                System.out.println("Dias : " + (diff/(24*3600*1000)));
               
                System.out.println("Dias de Cadena: " + (diffFromString/(24*3600*1000)));

Salu2...

Ezamudio dijo: En todo caso

Ezamudio dijo:

En todo caso para saber en días es fácil; la fecha de hoy, sin hora, menos la fecha de nacimiento, sin hora, el resultado lo divides entre 86400000 que son los milisegundos que tiene un día (24 horas * 60 minutos * 60 segundos *1000) y eso te da los días transcurridos de una fecha a otra.

En código:

import java.util.*;
import java.text.SimpleDateFormat;

class Fecha {
    public static void main( String ... args )  throws java.text.ParseException {
        Calendar calendar  = Calendar.getInstance(); // HOY
        calendar.set( Calendar.HOUR_OF_DAY , 0 );
        calendar.set( Calendar.MINUTE , 0 );
        calendar.set( Calendar.SECOND , 0 );
        Date fechaDeNacimiento = new SimpleDateFormat("dd/MM/yy").parse("01/09/2011");
        long dias = ( calendar.getTime().getTime() - fechaDeNacimiento.getTime()  )  / 86400000;
        System.out.println( dias );
    }
}

Obvio esto no es para que le hagas copy/paste, tienes que entenderlo y hacer un método auxiliar que te ayude con eso, además que no debes de crear una instancia de SimpleDateFormat así como así ni olimpicamente re-tirar el parse exception.

De todas formas creo que esto te puede dar una muy buena idea de como sacar la cantidad de días que tiene un bebe de necido.

Saludos.