首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中如何从Date对象中减去X天?

在Java中如何从Date对象中减去X天?
EN

Stack Overflow用户
提问于 2012-08-09 19:57:32
回答 9查看 389.3K关注 0票数 187

我想做一些类似的事情:

Date date = new Date(); // current date
date = date - 300; // substract 300 days from current date and I want to use this "date"

该怎么做呢?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-08-09 19:59:32

Java 8和更高版本

对于Java8的date time API更改,使用LocalDate

LocalDate date = LocalDate.now().minusDays(300);

类似地,您可以拥有

LocalDate date = someLocalDateInstance.minusDays(300);

java.util.Date <--> java.time.LocalDateTime之间的转换请参考https://stackoverflow.com/a/23885950/260990

Date in = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(), ZoneId.systemDefault());
Date out = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());

Java 7和更早版本

使用Calendaradd()方法

Calendar cal = Calendar.getInstance();
cal.setTime(dateInstance);
cal.add(Calendar.DATE, -30);
Date dateBefore30Days = cal.getTime();
票数 345
EN

Stack Overflow用户

发布于 2015-01-21 20:41:52

@JigarJoshi这是一个很好的答案,当然也是@Tim推荐使用.joda-time

我只想添加更多从java.util.Date中减去days的可能性。

Apache-commons

一种可能性是使用apache-commons-lang。您可以使用DateUtils完成此操作,如下所示:

Date dateBefore30Days = DateUtils.addDays(new Date(),-30);

当然,添加commons-lang依赖项来只做日期减法可能不是一个好的选择,但是如果你已经在使用commons-lang,这是一个很好的选择。还有方便的方法来addYearsaddMonthsaddWeeks等等,看看api here吧。

Java 8

另一种可能性是使用minusDays(long days)方法利用Java8中的新LocalDate

LocalDate dateBefore30Days = LocalDate.now(ZoneId.of("Europe/Paris")).minusDays(30);
票数 56
EN

Stack Overflow用户

发布于 2013-02-27 08:39:44

只需使用此命令获取300天之前的日期,将300替换为您的天数:

Date date = new Date(); // Or where ever you get it from
Date daysAgo = new DateTime(date).minusDays(300).toDate();

这里,

DateTimeorg.joda.time.DateTime;

Datejava.util.Date

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

https://stackoverflow.com/questions/11882926

复制
相关文章

相似问题

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