首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >日历的日期对象[Java]

日历的日期对象[Java]
EN

Stack Overflow用户
提问于 2010-04-28 16:01:40
回答 6查看 102.4K关注 0票数 69

我有一个班级电影,我有一个开始日期,一个持续时间和一个停止日期。开始和停止日期是Date对象(私有Date startDate ...)(这是一个赋值,所以我不能改变这一点)现在我想通过将持续时间(以分钟为单位)添加到startDate来自动计算stopDate。

据我所知,不推荐使用Date的时间操作函数,因此这是一种糟糕的做法,但另一方面,我认为没有办法将Date对象转换为日历对象,以便操作时间并将其重新转换为Date对象。有什么办法吗?如果有什么是最佳实践

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-04-28 16:08:55

您可以做的是创建一个GregorianCalendar实例,然后将Date设置为开始时间:

代码语言:javascript
复制
Date date;
Calendar myCal = new GregorianCalendar();
myCal.setTime(date);

然而,另一种方法是根本不使用Date。您可以使用如下方法:

代码语言:javascript
复制
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;
}

通过这种方式,您可以访问开始时间并获得从开始到停止的持续时间。当然,精确度取决于您。

票数 101
EN

Stack Overflow用户

发布于 2010-04-28 16:05:45

代码语言:javascript
复制
Calendar tCalendar = Calendar.getInstance();
tCalendar.setTime(date);

date是一个java.util.Date对象。您也可以使用Calendar.getInstance()来获得Calendar实例(效率更高)。

票数 27
EN

Stack Overflow用户

发布于 2010-04-28 16:04:58

Calendar.setTime()

查看API方法的签名和描述通常很有用,而不仅仅是它们的名称:) -即使在Java标准API中,名称有时也会产生误导。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2727698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档