27

我有一定的毫秒时间(在一个Timestamp对象中),我想用它来创建一个GregorianCalendar对象。我怎样才能做到这一点?

编辑:我该如何做相反的事情?

4

4 回答 4

46

只需使用 java.sql.Timestamp 获取 GregorianCalendar 和 setTime 的实例timestamp

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

编辑: 正如彼得指出的那样,默认情况下GregorianCalendar.getInstance()不会提供 a GregorianCalendar,因为它继承自Calendar.getInstance(),例如BuddhistCalendar在某些安装中可以提供 a 。一定要用一个GregorianCalenderusenew GregorianCalendar()代替。

于 2010-12-15T13:30:06.213 回答
45

获取 GregorianCalendar 对象而不是 Calendar 对象。就像迈克尔的回答提供的那样,您还可以执行以下操作:

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

这假设一个 UTC 纪元时间戳。

于 2013-05-07T09:53:55.113 回答
11
Timestamp timestamp = new Timestamp(23423434);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
于 2010-12-15T13:25:35.097 回答
1

我相信这是可行的,尽管它可能不是最好的方法:

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

}
于 2010-12-15T13:25:13.477 回答