Начиная с "делай это с делом", одним из решений является использование регулярных выражений для исправления строки после завершения SimpleDateFormat. Что-то вроде s / (\ d {2}) (\ d {2}) $ / $ 1: $ 2 / в Perl.
Если вам это даже интересно, я отредактирую этот ответ с помощью работающего кода Java.
Но да. Я тоже бьюсь над этой проблемой. RFC3339, я смотрю на тебя!
EDIT:
Это работает для меня
// As a private class member
private SimpleDateFormat rfc3339 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String toRFC3339(Date d)
{
return rfc3339.format(d).replaceAll("(\\d\\d)(\\d\\d)$", "$1:$2");
}