SimpleDateFormat n'est pas l'analyse de la millisecondes correctement

De fond:

Dans ma table de base de données, j'ai deux horodateurs

timeStamp1 = 2011-08-23 14:57:26.662
timeStamp2 = 2011-08-23 14:57:26.9

Quand je fais un "ORDER BY TIMESTAMP ASC", timeStamp2 est considéré comme le plus grand timestamp(qui est correcte).

Exigence: j'ai besoin d'obtenir la différence de ces horodateurs (timeStamp2 - timeStamp1)

Ma mise en œuvre:

public static String timeDifference(String now, String prev) {
    try {
        final Date currentParsed = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(now);
        final Date previousParsed = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(prev);
        long difference = currentParsed.getTime() - previousParsed.getTime();
        return "" + difference;
    } catch (ParseException e) {
        return "Unknown";
    }
}

La réponse doit avoir été 238ms, mais la valeur qui est renvoyée est -653ms.
Je ne suis pas sûr de ce que je fais mal. Des suggestions?

The answer should have been 232ms, vraiment - je obtenir 900-662 = 238.
Si elles sont stockées des timestamps dans la base de données, pourquoi ne vous obtenez des Chaînes de caractères pour les transformer en Dates? Tout simplement en tant que Timestamp cas, et vous aurez deux comparables dates, sans un besoin d'analyser n'importe quelle chaîne. Voir download.oracle.com/javase/6/docs/api/java/sql/...
Thomas - Ouais, désolé, c'est une faute de frappe. Il est 238ms

OriginalL'auteur dkulkarni | 2011-08-23