Dan*_*ski 82
这是普通的JDK版本,需要将Calendar
类作为帮助者:
Date referenceDate = new Date();
Calendar c = Calendar.getInstance();
c.setTime(referenceDate);
c.add(Calendar.MONTH, -3);
return c.getTime();
Run Code Online (Sandbox Code Playgroud)
但是你应该认真考虑使用Joda库,因为它Date
和Calendar
类的各种缺点.使用Joda,您可以执行以下操作:
new DateTime().minusMonths(3).toDate();
Run Code Online (Sandbox Code Playgroud)
或者,如果要从给定日期而不是当前日期中减去:
new DateTime(referenceDate).minusMonths(3).toDate();
Run Code Online (Sandbox Code Playgroud)
Java 8更新:使用Java 8,您还可以使用新的JSR 310 API(受Joda启发):
LocalDateTime.from(referenceDate.toInstant()).minusMonths(3);
Run Code Online (Sandbox Code Playgroud)
fir*_*umb 14
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MONTH, -3);
Run Code Online (Sandbox Code Playgroud)
使用setTime
方法设置日期.
使用Java 8你可以这样做,
Date d = Date.from(LocalDate.now().minusMonths(3).atStartOfDay(ZoneId.systemDefault()).toInstant());
Run Code Online (Sandbox Code Playgroud)
该类LocalDate
有很多方法可以帮助您轻松计算上述日期,
// Add 2 months
Date d = Date.from(LocalDate.now().plusMonths(2).atStartOfDay(ZoneId.systemDefault()).toInstant());
// Add 5 days
Date d = Date.from(LocalDate.now().plusDays(5).atStartOfDay(ZoneId.systemDefault()).toInstant());
// Minus 1 day and 1 year
Date d = Date.from(LocalDate.now().minusYears(1).minusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
Run Code Online (Sandbox Code Playgroud)
为了计算时间,您可以使用该类LocalDateTime
,
// Minus 1 year, minus 1 days, plus 1 hour
Date d = Date.from(LocalDateTime.now().minusYears(1).minusDays(1).plusHours(1).toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
64515 次 |
最近记录: |