+ 1
Java 8 getAge calc
JAVA 8 - I am trying to calculate age with a single line of code. Trying to turn the below code into a single line of code? public Int getAge() { LocalDate today = LocalDate.now(); YearMonth diff = YearMonth.between(birthdate, today); //int age = today.getYear() - birthdate.getYear(); return diff; }
5 ответов
+ 2
This is specifically what i was looking for. I figured it out.
public int getAge()
{
return Period.between(birthdate, LocalDate.now()).getYears();
}
+ 3
I question some things about the code you posted such as Int return type with a capital i and "birthdate" that came out of nowhere but putting all those aside,
I have never worked before with LocalDate so I don't know if there's an easier way for this but this is what I came up with:
public int getAge(int birthDate) {
return Integer.parseInt(String.valueOf(LocalDate.now()).substring(0, 4)) - birthDate;
}
gets today's date (2018-11-29), converts it to String, takes first 4 characters (2018), parses it to int, and subtracts birthDate from it (which is a method parameter)
as a result, the answer would be 20 for getAge(1998);
I hope this is what you asked for
+ 1
Welp. Told you that I didn't have any experience with LocalDate so I couldn't know the existence of Period class. My answer had a more primitive solution rip
Seems like I was the one to get to learn :D
0
Sorry here is what i have
import java.time.*;
public class Person
{
//instance variables
private String firstName;
private String lastName;
private LocalDate birthdate;
// constructor
public Person(String firstName ,String lastName, LocalDate birthdate)
{
this.firstName = firstName;
this.lastName = lastName;
this.birthdate = birthdate;
}
public int getAge()
{
return Period.between(birthdate, LocalDate.now()).getYears();
}
//override toString()
public String toString()
{
return firstName + " " + lastName + " " + getAge();
}
}//end class
0
Thanks for the response!