web-dev-qa-db-fra.com

Création d'une instance GregorianCalendar à partir de millisecondes

J'ai un certain temps en millisecondes (dans un objet Timestamp) et je veux l'utiliser pour créer un objet GregorianCalendar. Comment puis je faire ça?

MODIFIER : Comment faire l'inverse?

26
Amir Rachum

Obtenez simplement une instance de GregorianCalendar et setTime avec votre Java.sql.Timestamp timestamp:

Calendar cal=GregorianCalendar.getInstance();
cal.setTime(timestamp);

Edit: Comme peterh l'a souligné, GregorianCalendar.getInstance() ne fournira pas GregorianCalendar par par défaut, car il est hérité deCalendar.getInstance(), qui peut fournir par exemple un BuddhistCalendar sur certaines installations. Pour être sûr d'utiliser un GregorianCalender utilisez plutôt new GregorianCalendar().

41
Michael Konietzka

Pour obtenir un objet GregorianCalendar et non un objet Calendar. Comme l'indique la réponse de Michael, vous pouvez également effectuer les opérations suivantes:

long timestamp = 1234567890;
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(timestamp);

Cela suppose un horodatage UTC Epoch.

39
haaduken
Timestamp timestamp = new Timestamp(23423434);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
11
aepryus

Je crois que cela fonctionne, même si ce n'est peut-être pas la meilleure approche:

import Java.sql.Date;
import Java.sql.Timestamp;
import Java.util.GregorianCalendar;

public class TimestampToGregorianCalendar {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Timestamp t = new Timestamp(12356342); // replace with existing timestamp
        Date d = new Date(t.getTime());
        Calendar gregorianCalendar = GregorianCalendar.getInstance();
        gregorianCalendar.setTime(d);
    }

}
1
stark