vividos una persona nacimiento meses fechas fecha entre edad dias con como calcular años java time calendar epoch

una - Obtenga el número de días, semanas y meses, desde Epoch en Java



como calcular la edad en jframe (7)

java.time

Utilice las clases java.time integradas en Java 8 y posteriores.

LocalDate now = LocalDate.now(); LocalDate epoch = LocalDate.ofEpochDay(0); System.out.println("Days: " + ChronoUnit.DAYS.between(epoch, now)); System.out.println("Weeks: " + ChronoUnit.WEEKS.between(epoch, now)); System.out.println("Months: " + ChronoUnit.MONTHS.between(epoch, now));

Salida

Days: 16857 Weeks: 2408 Months: 553

Estoy tratando de obtener el número de días, semanas, meses desde la época en Java.

La clase de Calendario Java ofrece cosas como calendar.get (GregorianCalendar.DAY_OF_YEAR), o Calendar.get (GregorianCalendar.WEEK_OF_YEAR), que es un buen comienzo pero no hace exactamente lo que necesito.

¿Hay una manera elegante de hacer esto en Java?


Me sorprende que casi todas las respuestas sean en realidad días calculados entre la epoch y now . Con java.time.LocalDate es tan simple como:

LocalDate.now().toEpochDay()


No esperaría que hubiera una manera elegante de hacerlo ya que no es un requisito muy común. No puedo evitar preguntarme por qué quieres hacerlo ...

Pero de todos modos, la forma en que lo haría es restar la fecha de la época del Calendar y luego obtener los campos que desee:

Calendar timeSinceEpoch = Calendar.getInstance(); timeSinceEpoch.add(Calendar.YEAR, -1970); int yearsSinceEpoch = timeSinceEpoch.get(Calendar.YEAR); int monthsSinceEpoch = timeSinceEpoch.get(Calendar.MONTH) + 12 * yearsSinceEpoch;


Puede usar la biblioteca de Joda Time para hacer esto con bastante facilidad; lo uso para cualquier cosa relacionada con el tiempo que no sea la de las clases estándar de fecha y calendario de Java. Eche un vistazo al siguiente ejemplo utilizando la biblioteca:

MutableDateTime epoch = new MutableDateTime(); epoch.setDate(0); //Set to Epoch time DateTime now = new DateTime(); Days days = Days.daysBetween(epoch, now); Weeks weeks = Weeks.weeksBetween(epoch, now); Months months = Months.monthsBetween(epoch, now); System.out.println("Days Since Epoch: " + days.getDays()); System.out.println("Weeks Since Epoch: " + weeks.getWeeks()); System.out.println("Months Since Epoch: " + months.getMonths());

Cuando ejecuto esto obtengo el siguiente resultado:

Days Since Epoch: 15122 Weeks Since Epoch: 2160 Months Since Epoch: 496


Date.getTime() : devuelve el número de milisegundos desde el 1 de enero de 1970, 00:00:00 GMT representado por este objeto Date.

Puede usar esto y saber cuántos milisegundos hay en los intervalos que le interesan para realizar los cálculos.


Calendar now = Calendar.getInstance(); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(0); // start at EPOCH int days = 0 while (cal.getTimeInMillis() < now.getTimeInMillis()) { days += 1 cal.add(Calendar.DAY_OF_MONTH, 1) // increment one day at a time } System.out.println("Days since EPOCH = " + days);


Long currentMilli = System.currentTimeMillis(); Long seconds = currentMilli / 1000; Long minutes = seconds / 60; Long hours = minutes / 60; Long days = hours / 24; System.out.println("Days since epoch : " + days);

o

System.out.println("Days since epoch : " + ((int) currentMilli / 86400000));