首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Java日历从日期中减去X天?

如何使用Java日历从日期中减去X天?
EN

Stack Overflow用户
提问于 2008-10-17 14:14:07
回答 6查看 284K关注 0票数 194

有人知道用Java日历从日期中减去X天的简单方法吗?

在Java中,我找不到任何可以直接从日期中减去X天的函数。谁能给我指个方向?

EN

回答 6

Stack Overflow用户

发布于 2008-10-17 14:22:03

您可以使用add方法并向其传递一个负数。但是,您也可以编写一个不使用Calendar类的更简单的方法,如下所示

代码语言:javascript
复制
public static void addDays(Date d, int days)
{
    d.setTime( d.getTime() + (long)days*1000*60*60*24 );
}

这将获取日期的时间戳值(从纪元开始的毫秒数),并添加适当的毫秒数。您可以为days参数传递一个负整数来进行减法。这将比“适当的”日历解决方案更简单:

代码语言:javascript
复制
public static void addDays(Date d, int days)
{
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    c.add(Calendar.DATE, days);
    d.setTime( c.getTime().getTime() );
}

请注意,这两种解决方案都会更改作为参数传递的Date对象,而不是返回一个全新的Date。如果需要,这两个函数都可以很容易地更改为另一种方式。

票数 38
EN

Stack Overflow用户

发布于 2008-10-17 14:24:34

对于简单的情况,Anson's answer可以很好地工作,但如果您要进行更复杂的日期计算,我建议您查看Joda Time。它会让你的生活变得更轻松。

仅供参考,在Joda时间你可以做

代码语言:javascript
复制
DateTime dt = new DateTime();
DateTime fiveDaysEarlier = dt.minusDays(5);
票数 36
EN

Stack Overflow用户

发布于 2008-10-17 14:17:49

代码语言:javascript
复制
int x = -1;
Calendar cal = ...;
cal.add(Calendar.DATE, x);

请参阅java.util.Calendar#add(int,int)

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

https://stackoverflow.com/questions/212321

复制
相关文章

相似问题

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