Creación de una instancia GregorianCalendar de milisegundos
-
10-10-2019 - |
Pregunta
Tengo un cierto tiempo en milisegundos (en un objeto Timestamp
) y quiero utilizarlo para crear un objeto GregorianCalendar
. ¿Cómo puedo hacer eso?
Editar :? ¿Cómo lo hago al revés
Solución
Apenas consiga una instancia de GregorianCalendar y setTime con su timestamp
java.sql.Timestamp:
Calendar cal=GregorianCalendar.getInstance();
cal.setTime(timestamp);
Editar
Como Peterh señaló, GregorianCalendar.getInstance()
no proporcionará una GregorianCalendar
por defecto, ya que se hereda fromCalendar.getInstance()
, que puede proporcionar por ejemplo una BuddhistCalendar
en algunas instalaciones. Para estar seguro de utilizar un GregorianCalender
uso new GregorianCalendar()
lugar.
Otros consejos
Para obtener un objeto GregorianCalendar y no un objeto Calendar. Al igual que la respuesta de Michael proporciona, también puede hacer lo siguiente:
long timestamp = 1234567890;
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(timestamp);
Esto supone un sello de tiempo UTC época.
Timestamp timestamp = new Timestamp(23423434);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
Creo que esto funciona, aunque puede no ser el mejor enfoque:
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);
}
}