Создание экземпляра GregorianCalendar за миллисекунды - PullRequest
24 голосов
/ 15 декабря 2010

У меня есть определенное время в миллисекундах (для объекта Timestamp), и я хочу использовать его для создания объекта GregorianCalendar.Как я могу это сделать?

РЕДАКТИРОВАТЬ : Как мне сделать обратное?

Ответы [ 4 ]

41 голосов
/ 15 декабря 2010

Просто получите экземпляр GregorianCalendar и setTime с помощью java.sql.Timestamp timestamp:

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

Редактировать: Как указано Петер ,GregorianCalendar.getInstance() не предоставит GregorianCalendar по умолчанию, потому что он унаследован от Calendar.getInstance(), что может обеспечить, например, BuddhistCalendar в некоторых установках.Чтобы использовать GregorianCalender, используйте new GregorianCalendar().

39 голосов
/ 07 мая 2013

Чтобы получить объект GregorianCalendar, а не объект Calendar. Как и в ответе Михаила, вы также можете сделать следующее:

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

Это предполагает метку времени UTC.

11 голосов
/ 15 декабря 2010
Timestamp timestamp = new Timestamp(23423434);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
1 голос
/ 15 декабря 2010

Я считаю, что это работает, хотя это может быть не лучшим подходом:

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

}
...