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

È stato utile?

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);
    }

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top