Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Period Conversion dates to float

Tags:

java

I have day of birth and second LocalDate.now() I use Periof for print this

            Period test = Period.between(dateofbirth,LocalDate.now());

but if i want print this error "P5Y8M11D"

what can i do to get it- "You live in the world 10,23 years"

like image 251
WiceJav Avatar asked Feb 16 '26 20:02

WiceJav


1 Answers

Period#getYears

P5Y8M11D is the default format of Period#toString. You can get the components of period e.g. years, months, days etc. from the object of Period as per your requirement using its corresponding accessor methods.

Demo:

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.time.LocalDate;
import java.time.Period;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        LocalDate dateofbirth = LocalDate.of(1975, 7, 15);
        Period test = Period.between(dateofbirth, LocalDate.now());
        System.out.printf("You have lived in the world for %d years.%n", test.getYears());

        double years = test.getYears() + test.getMonths() / 12.0 + test.getDays() / 365.0;
        System.out.printf("You have lived in the world for %.2f years.%n", years);

        DecimalFormat format = (DecimalFormat) NumberFormat.getNumberInstance(Locale.GERMAN);
        format.applyPattern("#,##0.00");
        String formattedValue = format.format(years);
        System.out.printf("You have lived in the world for %s years.%n", formattedValue);
    }
}

Output:

You have lived in the world for 45 years.
You have lived in the world for 45.36 years.
You have lived in the world for 45,36 years.
like image 88
Arvind Kumar Avinash Avatar answered Feb 18 '26 11:02

Arvind Kumar Avinash



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!