web-dev-qa-db-fra.com

Comment convertir un horodatage en objet Date ou DateTime?

Je récupère un objet d'horodatage d'une base de données à l'aide de ResultSet.getTimestamp(), mais j'aimerais un moyen simple d'obtenir la date au format MM/DD/YYYY et l'heure au format HH:MM xx. Je bricolais, il semble que je puisse le faire en utilisant les objets Date et/ou DateTime dans Java. Est-ce la meilleure façon de faire ou dois-je même convertir l'horodatage pour accomplir cela? Toute recommandation serait utile.

....
while(resultSet.next()) {
    Timestamp dtStart = resultSet.getTimestamp("dtStart");
    Timestamp dtEnd = resultSet.getTimestamp("dtEnd");

    // I would like to then have the date and time
    // converted into the formats mentioned...
    ....
}
....
17
Kris Schouw

Java.sql.Timestamp est une sous-classe de Java.util.Date . Donc, il suffit de upcast.

Date dtStart = resultSet.getTimestamp("dtStart");
Date dtEnd = resultSet.getTimestamp("dtEnd");

Utiliser SimpleDateFormat et créer Joda DateTime devrait être simple à partir de maintenant.

14
BalusC
import Java.sql.Timestamp;
import Java.text.SimpleDateFormat;
import Java.util.Date;

public class DateTest {

    public static void main(String[] args) {
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        Date date = new Date(timestamp.getTime());

        // S is the millisecond
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy' 'HH:mm:ss:S");

        System.out.println(simpleDateFormat.format(timestamp));
        System.out.println(simpleDateFormat.format(date));
    }
}
21
Christopher

Vous pouvez également obtenir un objet DateTime à partir de l'horodatage, y compris votre heure d'été:

public DateTime getDateTimeFromTimestamp(Long value) {
    TimeZone timeZone = TimeZone.getDefault();
    long offset = timeZone.getOffset(value);
    if (offset < 0) {
        value -= offset;
    } else {
        value += offset;
    }
    return new DateTime(value);
}    
0
Piotr Niewinski