I managed to parse a String
to a LocalDate
object:
DateTimeFormatter f1=DateTimeFormatter.ofPattern(\"dd MM yyyy\");
LocalDate d=Lo
If you use a specific format, according to API:
The string must represent a valid time and is parsed using DateTimeFormatter.ISO_LOCAL_TIME.
hh mm
for 24h must be
HH mm
or for 12h
kk mm
The handled formats must have this conditions:
Use DateTimeFormatter.ofPattern("kk mm")
; for 12 hour clock or DateTimeFormatter.ofPattern("HH mm")
for 24 hour clock
If you want to parse time with hh
you must combine it wih a
where you define AM or PM:
DateTimeFormatter f2 = DateTimeFormatter.ofPattern("hh mm a");
LocalTime t = LocalTime.parse("11 08 AM", f2);
You need to use capital HH in the pattern
DateTimeFormatter f2=DateTimeFormatter.ofPattern("HH mm");
or do this, for clock-hour-of-am-pm
you need to specify it.
This should also work
DateTimeFormatter f2=DateTimeFormatter.ofPattern("hh mm a");
LocalTime t=LocalTime.parse("11 08 AM",f2); //exception here
In this case Unable to obtain LocalTime from TemporalAccessor
means it cannot determine the how far through the day the given string represents i.e. there is not enough information to construct a LocalTime
. Behind the scenes, the code looks something like this expanded Java 8 version (which gives a similar error):
DateTimeFormatter f2 = DateTimeFormatter.ofPattern("hh mm");
TemporalAccessor temporalAccessor = f2.parse("11 08");
LocalTime t = temporalAccessor.query(LocalTime::from);
System.out.println(t);
The LocalTime::from documentation says
The conversion uses the TemporalQueries.localTime() query, which relies on extracting the NANO_OF_DAY field.
Your error is telling you that the TemporalAccessor
only has two fields, neither of which is a NANO_OF_DAY
field. The minimum allowable patterns for retrieving a LocalTime
using a DateTimeFormatter
are:
DateTimeFormatter.ofPattern("ha");
DateTimeFormatter.ofPattern("Ka");
DateTimeFormatter.ofPattern("ah");
DateTimeFormatter.ofPattern("aK");
DateTimeFormatter.ofPattern("k");
DateTimeFormatter.ofPattern("H");
Your pattern must contain at least one of those strings to get a NANO_OF_DAY
field in the internal TemporalAccessor
from which a LocalTime
can be constructed.