Как вычислять мой возраст в часы, минуты и секунды?

Я должен вычислять мой возраст в годы, месяцы, в дни, часы, минуты и секунды. Только я смог считать годы, месяцы и в дни. Как он мог бы считать в часы, минуты и секунды?

package age;
import java.time.LocalDate;
import java.time.Period;
import java.util.Scanner;

public class Age {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your birthdate:");
        System.out.println("Year: ");
        int year = sc.nextInt();
        System.out.println("Month: ");
        int month = sc.nextInt();
        System.out.println("Day: ");
        int day = sc.nextInt();

        LocalDate today = LocalDate.now();
        LocalDate birthdate = LocalDate.of(year, month, day);

        Period p = Period.between(birthdate, today);

        System.out.println("I am " + p.getYears() + " years, " + p.getMonths() + " months, " + p.getDays() + " days old.");       

    }

}
4
задан 11.10.2016, 21:19
3 ответа

Используй книжный магазин

TimeUnit

    import java.util.concurrent.TimeUnit;
    .
    .
      long segundos = TimeUnit.DAYS.toSeconds(tusDias);
      long minutos =TimeUnit.DAYS.toMinutes(tusDias);
      long horas = TimeUnit.DAYS.toHours(tusDias);
1
ответ дан 24.11.2019, 13:08
  • 1
    Не использование м и # 225; s я завершаю TimeUnit, что ты реализуешь aqu и # 237; f и # 225; cil возможно реализовывать, не используя классов Horas = tuDias*24 Minutos = tuDias*1440 Segundos = tuDias*86400 – Dev. Joel 11.10.2016, 22:07
  • 2
    Также стоится этот ответ, просвет я чувствую себя более удобным в использовании TimeUnit. – Gatusko 11.10.2016, 22:20

По моему мнению, останься более компактным используя GregorianCalendar и Восходите:

Scanner sc = new Scanner(System.in);
System.out.println("Enter your birthdate:");
System.out.println("Year: ");
int year = sc.nextInt();
System.out.println("Month: (1-12)");
int month = sc.nextInt()-1;
System.out.println("Day: ");
int day = sc.nextInt();
Calendar calendar = new GregorianCalendar();
calendar.setTime(new Date());
Calendar calendar2 = new GregorianCalendar(year,month,day);
long diffInMillis = calendar.getTimeInMillis()-calendar.getTimeInMillis();
System.out.println("I am  " + diffInMillis/3600000*24*365+" years, "+diffInMillis/3600000*24*30.4167+" months, "+diffInMillis/3600000*24+" days, "+ diffInMillis/3600000+" hours, "+ diffInMillis/60000+" minutes and "+diffInMillis/1000+ " seconds old");

Конечно, допуская ошибку, выдвинутую Elenasys в вычислении на месяцы.

1
ответ дан 24.11.2019, 13:08
  • 1
    Только один согрешил и # 241; или я меняюсь. Используй Calendar#getInstance вместо new GregorianCalendar. Схвати и # 237; календарь будет зависеть от configuraci и # 243; n системы. Не все календари грегорианские. –  13.10.2016, 07:09
  • 2
    Добавочный, забота со стоимостью month. Seg и # 250; n documentaci и # 243; n этого строителя, поле month est и # 225; основанный на 0, не в 1, из-за которого, если они вводят 12 в компьютер как месяц, тогда считаться и # 225; как месяц 0. –  13.10.2016, 07:11

Начиная с тебя cГіdigo выдвинутый, немного сложно иметь точное вычисление, фактом, который ты должен проверять, что месяцы те, которые имеются в вычислении, и как ты знаешь месяцы, они могут иметь различное количество dГ-эксперта.

, Если мы берем среднюю величину dГ-эксперта, который у него может быть в одном месяце, которого 30.4167 в одном aГ±o, могут получать результат (считая один pequeГ±o край ошибки в вычислении).

...
...

      System.out.println("I am " + p.getYears() + " years, " + p.getMonths() + " months, " + p.getDays() + " days old.");       


      double diasAno = p.getYears() * 365; //Días obtenidos a partir de los años.
      double diasMes = p.getMonths() * 30.4167;//Días obtenidos a partir de los meses, se usa el promedio.
      double dias = p.getDays(); //días.


      //Obtiene los dias transcurridos.
      double diasTotales = diasAno + diasMes + dias;
      System.out.println("diasTotales " + diasTotales);

      //Obtiene horas, minutos y segundos a partir de los dias transcurridos.       
      long horas = TimeUnit.DAYS.toHours((int)diasTotales);
      long minutos = TimeUnit.DAYS.toMinutes((int)diasTotales);
      long segundos = TimeUnit.DAYS.toSeconds((int)diasTotales);                   

      System.out.println("I am  " + horas + " hours, " + minutos + ", minutes and " + segundos + " seconds old.");
0
ответ дан 24.11.2019, 13:08

Теги

Похожие вопросы