Creazione di un'istanza GregorianCalendar da millisecondi
-
10-10-2019 - |
Domanda
Ho un certo periodo di tempo in millisecondi (in un oggetto Timestamp
) e voglio usarlo per creare un oggetto GregorianCalendar
. Come posso fare?
Modifica :? Come faccio a fare il contrario
Soluzione
Basta avere un'istanza di GregorianCalendar e setTime con il timestamp
java.sql.Timestamp:
Calendar cal=GregorianCalendar.getInstance();
cal.setTime(timestamp);
Modifica
Come PeterH indicate, GregorianCalendar.getInstance()
non fornirà un GregorianCalendar
per default, perché viene ereditata fromCalendar.getInstance()
, che può fornire per esempio un BuddhistCalendar
su alcune installazioni. Per essere sicuri di utilizzare una GregorianCalender
uso new GregorianCalendar()
invece.
Altri suggerimenti
Per ottenere un oggetto GregorianCalendar e non un oggetto Calendar. Come risposta di Michael offre, è possibile anche effettuare le seguenti operazioni:
long timestamp = 1234567890;
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(timestamp);
Questo presuppone un timestamp UTC un'epoca.
Timestamp timestamp = new Timestamp(23423434);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
Credo che questo funziona, anche se non può essere l'approccio migliore:
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);
}
}