Я должен вычислять мой возраст в годы, месяцы, в дни, часы, минуты и секунды. Только я смог считать годы, месяцы и в дни. Как он мог бы считать в часы, минуты и секунды?
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.");
}
}
По моему мнению, останься более компактным используя 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 в вычислении на месяцы.
Calendar#getInstance
вместо new GregorianCalendar
. Схвати и # 237; календарь будет зависеть от configuraci и # 243; n системы. Не все календари грегорианские.
–
13.10.2016, 07:09
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.");
TimeUnit
, что ты реализуешь aqu и # 237; f и # 225; cil возможно реализовывать, не используя классовHoras = tuDias*24
Minutos = tuDias*1440
Segundos = tuDias*86400
– Dev. Joel 11.10.2016, 22:07