SimpleDateFormat d'Horodatage perd en précision avec la méthode getTime()

J'ai une méthode pour analyser une Chaîne de caractères (aaaa-MM-jj HH:mm:ss.SSS) d'un objet Date, à l'aide de SimpleDateFormat.

public static Timestamp convertToTimestamp(String stringToFormat) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    try {
        Date date = dateFormat.parse(stringToFormat);
        Timestamp tstamp = new Timestamp(date.getTime());
        return tstamp;
    } 
    catch (ParseException e) {
        return null;
    }
}

Toutefois, lorsque les Millisecondes fin en 0, par exemple, "2013-07-07 19:15:00.000", quand je fais la suite de l'affecter à un objet heure:

Timestamp tstamp = new Timestamp(date.getTime());

le résultat est le suivant 2013-07-07 19:15:00.0

Est-il un moyen de garder la précision de trois chiffres après la virgule sur le Millisecondes? Je me rends compte que je pourrais probablement faire une sorte de contrôle de la longueur et ajouter manuellement sur 0, mais la plus efficace, la méthode standard de garder cette précision serait préférable

Timestamp#toString() est explicitement tronquer les zéros à droite; vous n'êtes pas perdre en précision.

OriginalL'auteur deanmau5 | 2013-07-22