Period ppw = Period.parse("p2w");
Period ppW = Period.parse("P10W");
Period ppy = Period.parse("p10y2m6w12d");
System.out.println("\n"+ppw+" "+ppW+" "+ppy);
In the above test all the weeks were automatically converted to days when printed. So has something changed in JVM, or the phrase in the book is not referring to the results?
Last line of the first paragraph under "Parsing a string to create a Period" heading.
You mean, "For example, P1Y10M3d means 1 year, 10 months, and 3 days, P1Y3D means 1 year and 3 days. p1Y2w means 1 year and 2 weeks"? It is correct. It is talking about what these specification strings imply. i.e. y is for years, d is for days, m is for months, and w is for weeks.
It is not talking about how the Period object gets printed. Should be made clear.
The Javadoc says, "The supported units of a period are YEARS, MONTHS and DAYS." Only the API designers can answer why they decided not to support WEEKS as well. I don't remember coming across any reason for this.
If you want to print weeks, you need to get days and divide by 7. There is no getWeeks method in Period.
Apparently, there may be differences? Does the exam expect us to know these differences?
Example:
ISO_LOCAL_DATE ISO Local Date '2011-12-03'
ISO_DATE ISO Date with or without offset '2011-12-03+01:00'; '2011-12-03')
LocalDate uses ISO_DATE, LocalTime uses ISO_TIME, and LocalDateTime uses ISO_LOCAL_DATE_TIME to parse the given string. Thus, for example, invoking LocalDate.parse("2018-02-14"); will produce the same result as invoking LocalDate.parse("2018-02-14", DateTimeFormatter.ISO DATE);
the first two use ISO_ but last use ISO_LOCAL??
why
Which Java version are you using? I just tried this code on Java 21 as well as 17. LocalDate.parse("Oct/23/19", dtf); works fine on both and prints 2019-10-23.
Also, double check how you are creating dtf. It should be:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM/dd/yy");
Oh yes, right. Since it is a "local" date, the month value must be in format expected by the default locale of your program. Should be mentioned in the book.
You said ISO_LOCAL_DATE is default like its general, but it's default only because we use LocalDate.parse()
If we use OffsetTime.parse() then default would be ISO_OFFSET_TIME
Also a lot of mention of ISO_DATE but it's only for Date class, and we should avoid this class from java.util since it became old