java - 如何使用java8获取上周和上个月

标签 java datetime java-8

我有一个日期,我需要知道日期之前的最后一周和最后一个月。

例如,

2018年7月15日,最后一周是7月2日到7月8日,最后一个月是6月1日到6月30日。

2018年7月16日,最后一周是7月9日到7月15日,最后一个月是6月1日到6月30日。

2018年7月17日,最后一周是7月9日到7月15日,最后一个月是6月1日到6月30日。

它不同于get-date-of-first-day-of-week-based-on-localdate-now-in-java-8 ,我的问题是获取上周或上个月。

最佳答案

您可以使用这些辅助方法。

public static LocalDate[] getPreviousWeek(LocalDate date) {
    final int dayOfWeek = date.getDayOfWeek().getValue();
    final LocalDate from = date.minusDays(dayOfWeek + 6); // (dayOfWeek - 1) + 7
    final LocalDate to = date.minusDays(dayOfWeek);

    return new LocalDate[]{from, to};
}

public static LocalDate[] getPreviousMonth(LocalDate date) {
    final LocalDate from = date.minusDays(date.getDayOfMonth() - 1).minusMonths(1);
    final LocalDate to = from.plusMonths(1).minusDays(1);

    return new LocalDate[]{from, to};
}

其实有很多种写法。我建议您自己进行一些探索。

关于java - 如何使用java8获取上周和上个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51356377/

相关文章:

java - 有没有办法在一行中将分组列表连接到 Java 8 中的集合中?

java-8 - 为什么 ExecutorService 不在流中工作?

java - 新错误 java.lang.IllegalStateException : Can not perform this action after onSaveInstanceState

c# - 如何在 .NET 中获取此 DateTime 格式

datetime - 通过 RTTI 将 TDateTime 值传递给 OleVariant 属性

sql-server - TSQL 日期时间大小

java - 局部变量必须是 final 或有效的 final

java - 返回一个迭代器是什么意思? java

java - 具有不同 namespace 的 JAXB 片段

java - Vector 和 Hashtable 在集合中如何保证线程安全?