Création d'une instance GregorianCalendar de millisecondes
-
10-10-2019 - |
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
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);
}
}