Java8实现获取上个月某个日期和当前月份某个日期
LocalDate常用API
LocalDate 是 Java 8 中处理日期的一个类,它提供了许多常用的方法,以下是其中一些常见的方法:
now():返回当前日期。of(int year, int month, int dayOfMonth):根据年、月、日创建一个LocalDate对象。getYear():返回年份。getMonth():返回月份。getDayOfMonth():返回月份中的天数。getDayOfWeek():返回星期几。plusDays(long daysToAdd):将当前日期加上指定的天数,并返回一个新的LocalDate对象。plusMonths(long monthsToAdd):将当前日期加上指定的月份数,并返回一个新的LocalDate对象。plusYears(long yearsToAdd):将当前日期加上指定的年数,并返回一个新的LocalDate对象。minusDays(long daysToSubtract):将当前日期减去指定的天数,并返回一个新的LocalDate对象。minusMonths(long monthsToSubtract):将当前日期减去指定的月份数,并返回一个新的LocalDate对象。minusYears(long yearsToSubtract):将当前日期减去指定的年数,并返回一个新的LocalDate对象。
TemporalAdjusters常用API
TemporalAdjusters 是 Java 8 中处理日期时间调整的一个工具类,它提供了许多常用的方法,以下是其中一些常见的方法:
firstDayOfMonth():返回当月的第一天。lastDayOfMonth():返回当月的最后一天。firstDayOfNextMonth():返回下个月的第一天。firstDayOfYear():返回当年的第一天。lastDayOfYear():返回当年的最后一天。firstDayOfNextYear():返回下一年的第一天。dayOfWeekInMonth():返回当月的第几个星期几,例如第二个星期五。next(DayOfWeek dayOfWeek):返回下一个指定星期几的日期。previous(DayOfWeek dayOfWeek):返回上一个指定星期几的日期。nextOrSame(DayOfWeek dayOfWeek):返回下一个指定星期几的日期,如果指定的日期已经是这个星期几,则返回这个日期。previousOrSame(DayOfWeek dayOfWeek):返回上一个指定星期几的日期,如果指定的日期已经是这个星期几,则返回这个日期。
以上是 TemporalAdjusters 的一些常用方法,你可以根据自己的需求选择合适的方法来处理日期时间调整。
实例代码
import java.time.LocalDate; // 导入 LocalDate 类
import java.time.temporal.TemporalAdjusters; // 导入 TemporalAdjusters 类
/**
* <p>
* 日期测试类
* </p>
*
* @author snogzixian
* @Url 宋子宪博客 www.songzixian.com
* @since 2023-03-15
*/
public class TestLocalDate {
public static void main(String[] args) {
LocalDate now = LocalDate.now(); // 获取当前日期
LocalDate start = now.with(TemporalAdjusters.firstDayOfMonth()) // 获取本月第一天
.plusDays(10) // 加上 10 天,即本月 11 号
.minusMonths(1); // 减去一个月,即上个月 11 号
LocalDate end = now.with(TemporalAdjusters.firstDayOfMonth()) // 获取本月第一天
.plusDays(13); // 加上 13 天,即本月 14 号
System.out.println("Start date: " + start); // 输出开始日期
System.out.println("End date: " + end); // 输出结束日期
}
}代码解析说明
首先,我们导入了 LocalDate 和 TemporalAdjusters 两个类,分别用于处理日期和时间调整。
然后,在 main 方法中,我们使用 LocalDate.now() 方法获取当前日期,并将其赋值给 now 变量。
接着,我们使用 now.with(TemporalAdjusters.firstDayOfMonth()) 获取本月的第一天,即本月的 1 号。然后,我们使用 .plusDays(10) 方法将日期加上 10 天,即本月的 11 号;再使用 .minusMonths(1) 方法将日期减去一个月,即上个月的 11 号,最后将其赋值给 start 变量。
同样地,我们使用 now.with(TemporalAdjusters.firstDayOfMonth()) 获取本月的第一天,然后使用 .plusDays(13) 方法将日期加上 13 天,即本月的 14 号,将其赋值给 end 变量。
最后,我们使用 System.out.println() 方法输出开始日期和结束日期。