我有一个班级电影,我有一个开始日期,一个持续时间和一个停止日期。开始和停止日期是Date对象(私有Date startDate ...)(这是一个赋值,所以我不能改变这一点)现在我想通过将持续时间(以分钟为单位)添加到startDate来自动计算stopDate。
据我所知,不推荐使用Date的时间操作函数,因此这是一种糟糕的做法,但另一方面,我认为没有办法将Date对象转换为日历对象,以便操作时间并将其重新转换为Date对象。有什么办法吗?如果有什么是最佳实践
发布于 2010-04-28 16:08:55
您可以做的是创建一个GregorianCalendar
实例,然后将Date
设置为开始时间:
Date date;
Calendar myCal = new GregorianCalendar();
myCal.setTime(date);
然而,另一种方法是根本不使用Date
。您可以使用如下方法:
private Calendar startTime;
private long duration;
private long startNanos; //Nano-second precision, could be less precise
...
this.startTime = Calendar.getInstance();
this.duration = 0;
this.startNanos = System.nanoTime();
public void setEndTime() {
this.duration = System.nanoTime() - this.startNanos;
}
public Calendar getStartTime() {
return this.startTime;
}
public long getDuration() {
return this.duration;
}
通过这种方式,您可以访问开始时间并获得从开始到停止的持续时间。当然,精确度取决于您。
发布于 2010-04-28 16:05:45
Calendar tCalendar = Calendar.getInstance();
tCalendar.setTime(date);
date是一个java.util.Date对象。您也可以使用Calendar.getInstance()来获得Calendar实例(效率更高)。
发布于 2010-04-28 16:04:58
查看API方法的签名和描述通常很有用,而不仅仅是它们的名称:) -即使在Java标准API中,名称有时也会产生误导。
https://stackoverflow.com/questions/2727698
复制相似问题