import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.stream.Stream;

public class Main {
	public static void main(String[] args) {
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern(
				"u-D'T'H:m:s[.[SSSSSSSSS][SSSSSSSS][SSSSSSS][SSSSSS][SSSSS][SSSS][SSS][SS][S]]", Locale.ENGLISH);
		
		// Test
		Stream.of(
				"2018-338T14:02:57.47583", 
				"2018-338T14:02:57.475835", 
				"2018-338T14:02:57.4758352",
				"2018-338T14:02:57.47583529"
		).forEach(s -> System.out.println(LocalDateTime.parse(s, dtf)));
	}
}
