So far with my testing the best apporach for this is using DateTimeFormatter that will math what you want.
String input = "2018-02-14 14:57:59.487927";
DateTimeFormatter r =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
LocalDateTime a =LocalDateTime.parse(input,r);
System.out.println(a);
With this you will get
Hour: 14
Minite: 57
Second: 59
Nano: 487927000
And with SimpleDateFormat you will get milisecond always with 927 and so far you will always loose precision.
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
So far you best precission is only 3 digits and there is no nanoseconds in SimpleDateFormat.
I suggest to use the new Java 8 Date libraries.