First of all, you don't have nanoseconds as you seem to believe.
The date 1126732882247990 can be decomposed as follows :
1126732882247990 microseconds
1126732882247 milliseconds
1126732882 seconds.
So, If you need a milliseconds precision it is quite simple:
// keep only the milliseconds
long date = Long.parseLong("1126732882247990".substring(0,13));
2005-09-14 23:21:22.247
// then apply whatever conversion you want
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
df.setTimeZone(TimeZone.getTimeZone("France"));
2005-09-14 09:21:22.247
If the only finality is to display it, you also can add the microseconds:
String timeStamp = df.format(dateObj).concat(".").concat("1126732882247990".substring(13,16));
2005-09-14 09:21:22.247.990