我想做类似的事情:
Date date = new Date(); // current date
date = date - 300; // substract 300 days from current date and I want to use this "date"
怎么做?
答案 0 :(得分:226)
使用Java 8的日期时间API更改时,请使用LocalDate
LocalDate date = LocalDate.now().minusDays(300);
Calendar cal = Calendar.getInstance();
cal.setTime(dateInstance);
cal.add(Calendar.DATE, -30);
Date dateBefore30Days = cal.getTime();
答案 1 :(得分:30)
@JigarJoshi它是一个很好的答案,当然还有@Tim建议使用。joda-time。
我只想添加更多从java.util.Date
中减去天数的可能性。
一种可能性是使用apache-commons-lang。您可以使用DateUtils
执行此操作,如下所示:
Date dateBefore30Days = DateUtils.addDays(new Date(),-30);
当然添加commons-lang
依赖关系只做日期减去它可能不是一个好选项,但是如果你已经使用commons-lang
它是一个不错的选择。 addYears
,addMonths
,addWeeks
等方法也很方便,请查看api here。
另一种可能性是使用LocalDate
方法从 Java 8 中利用新的minusDays(long days)
:
LocalDate dateBefore30Days = LocalDate.now(ZoneId.of("Europe/Paris")).minusDays(30);
答案 2 :(得分:28)
我真的建议您使用此处的DateTime库:https://www.joda.org/joda-time/
这是我为几乎每个构建的Java项目添加的第一个依赖项之一。
如果您有一些遗留代码需要日期或日历,您可以将其从DateTimes转换回来。
所以减去300天会很简单:
Date date = new Date(); // Or where ever you get it from
Date daysAgo = new DateTime(date).minusDays(300).toDate();
答案 3 :(得分:12)
Java 8 Time API:
Instant now = Instant.now(); //current date
Instant before = now.minus(Duration.ofDays(300));
Date dateBefore = Date.from(before);
答案 4 :(得分:10)
答案 5 :(得分:7)
正如您所见HERE,您可以进行大量操作。这是一个展示你可以做什么的例子!
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
//Add one day to current date.
cal.add(Calendar.DATE, 1);
System.out.println(dateFormat.format(cal.getTime()));
//Substract one day to current date.
cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(dateFormat.format(cal.getTime()));
/* Can be Calendar.DATE or
* Calendar.MONTH, Calendar.YEAR, Calendar.HOUR, Calendar.SECOND
*/
答案 6 :(得分:1)
我创建了一个使任务更容易的功能。
在dateString之后的7天内:dateCalculate(dateString,"yyyy-MM-dd",7);
最多7天到达日期:dateCalculate(dateString,"yyyy-MM-dd",-7);
public static String dateCalculate(String dateString, String dateFormat, int days) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat s = new SimpleDateFormat(dateFormat);
try {
cal.setTime(s.parse(dateString));
} catch (ParseException e) {
e.printStackTrace();
}
cal.add(Calendar.DATE, days);
return s.format(cal.getTime());
}
答案 7 :(得分:1)
在 Java 8 中你可以这样做:
Instant inst = Instant.parse("2018-12-30T19:34:50.63Z");
// subtract 10 Days to Instant
Instant value = inst.minus(Period.ofDays(10));
// print result
System.out.println("Instant after subtracting Days: " + value);
答案 8 :(得分:0)
您可以使用SimpleDateFormat
轻松地使用日历减去 public static String subtractDate(String time,int subtractDay) throws ParseException {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);
cal.setTime(sdf.parse(time));
cal.add(Calendar.DATE,-subtractDay);
String wantedDate = sdf.format(cal.getTime());
Log.d("tag",wantedDate);
return wantedDate;
}
答案 9 :(得分:0)
您也许还可以使用Duration
类。例如
Date currentDate = new Date();
Date oneDayFromCurrentDate = new Date(currentDate.getTime() - Duration.ofDays(1).toMillis());
答案 10 :(得分:-4)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>