【发布时间】:2011-05-25 21:57:02
【问题描述】:
我有一定的毫秒时间(在Timestamp 对象中),我想用它来创建GregorianCalendar 对象。我该怎么做?
编辑:我该如何做相反的事情?
【问题讨论】:
标签: java timestamp gregorian-calendar
我有一定的毫秒时间(在Timestamp 对象中),我想用它来创建GregorianCalendar 对象。我该怎么做?
编辑:我该如何做相反的事情?
【问题讨论】:
标签: java timestamp gregorian-calendar
只需使用您的 java.sql.Timestamp timestamp 获取 GregorianCalendar 和 setTime 的实例:
Calendar cal=GregorianCalendar.getInstance();
cal.setTime(timestamp);
编辑:
正如peterh 指出的那样,GregorianCalendar.getInstance() 默认不会提供GregorianCalendar,因为它继承自Calendar.getInstance(),例如在某些安装中可以提供BuddhistCalendar。要确保使用GregorianCalender,请改用new GregorianCalendar()。
【讨论】:
GregorianCalendar.getInstance() 似乎无法保证您获得GregorianCalender。由于这个问题是专门关于 GregorianCalendar 的,我认为这个答案有点不正确。 (haaduken的回答更正确)
获取 GregorianCalendar 对象而不是 Calendar 对象。就像迈克尔的回答提供的那样,您还可以执行以下操作:
long timestamp = 1234567890;
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(timestamp);
这假定一个 UTC 纪元时间戳。
【讨论】:
Timestamp timestamp = new Timestamp(23423434);
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
【讨论】:
我相信这是可行的,尽管它可能不是最好的方法:
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);
}
}
【讨论】: