Conversión cadena-fecha con nanosegundos

He estado luchando por un tiempo con este trozo de código para una aplicación de Android y no puedo entenderlo. He leído y probado todas las soluciones que encontré en stackoverflow y otros lugares, pero aún así no tuve suerte.

Lo que quiero hacer es tener una función para convertir una cadena como"17.08.2012 05:35:19:7600000" a una fecha UTC y una función que toma unaUTC date y lo convierte en una cadena como esa.

String value = "17.08.2012 05:35:19:7600000";
DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss:SSSSSSS");
try
{
  Date today = df.parse(value);
  System.out.println("Today = " + df.format(today) + " " + today.toGMTString());
} 
catch (ParseException e)
{
  e.printStackTrace();
}

Esto resulta en :Today = 17.08.2012 07:41:59:0000000 17 Aug 2012 04:41:59 GMT que son los dos mal

Intenté establecerSDF's timezone aUTC, sin suerte.
Otra cosa que noté: si lo hago.df.setLenient(false);
Me da :java.text.ParseException: Unparseable date: "17.08.2012 05:35:19:7600000" .

Si alguien me puede proporcionar algunas explicaciones / código de muestra, estaría muy agradecido. Gracias por adelantado

Respuestas a la pregunta(3)

Su respuesta a la pregunta