Parses a datetime from the given text, at the given position, saving the result into the fields of the given ReadWritableInstant. If the parse succeeds, the return value is the new text position. Note that the parse may succeed without fully reading the text and in this case those fields that were read will be set.
Only those fields present in the string will be changed in the specified instant. All other fields will remain unaltered. Thus if the string only contains a year and a month, then the day and time will be retained from the input instant. If this is not the behaviour you want, then reset the fields before calling this method, or use {@link #parseDateTime(String)}or {@link #parseMutableDateTime(String)}.
If it fails, the return value is negative, but the instant may still be modified. To determine the position where the parse failed, apply the one's complement operator (~) on the return value.
The parse will use the chronology of the instant.
@param instant an instant that will be modified, not null
@param text the text to parse
@param position position to start parsing from
@return new position, negative value means parse failed -apply complement operator (~) to get position of failure
@throws UnsupportedOperationException if parsing is not supported
@throws IllegalArgumentException if the instant is null
@throws IllegalArgumentException if any field is out of range