Question

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?

EDIT : Comment dois-je faire l'inverse

Était-ce utile?

La solution

Procurez-vous une instance de GregorianCalendar et setTime avec votre java.sql.Timestamp timestamp:

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

Edit: Comme PeterH a souligné, GregorianCalendar.getInstance() ne fournira pas GregorianCalendar par défaut, car elle est héritée fromCalendar.getInstance(), qui peut fournir par exemple un BuddhistCalendar sur certaines installations. Pour être sûr d'utiliser une utilisation GregorianCalender new GregorianCalendar() à la place.

Autres conseils

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

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

Cela suppose une timestamp UTC.

Timestamp timestamp = new Timestamp(23423434);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());

Je crois que cela fonctionne, bien qu'il ne soit 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);
    }

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top