我想做一些类似的事情:
Date date = new Date(); // current date
date = date - 300; // substract 300 days from current date and I want to use this "date"
该怎么做呢?
发布于 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和更早版本
Calendar cal = Calendar.getInstance();
cal.setTime(dateInstance);
cal.add(Calendar.DATE, -30);
Date dateBefore30Days = cal.getTime();
发布于 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
,这是一个很好的选择。还有方便的方法来addYears
,addMonths
,addWeeks
等等,看看api here吧。
Java 8
另一种可能性是使用minusDays(long days)
方法利用Java8中的新LocalDate
:
LocalDate dateBefore30Days = LocalDate.now(ZoneId.of("Europe/Paris")).minusDays(30);
发布于 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();
这里,
DateTime
为org.joda.time.DateTime;
Date
为java.util.Date
https://stackoverflow.com/questions/11882926
复制相似问题