1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java8日期计算(偏移N周 返回指定星期的日期)

java8日期计算(偏移N周 返回指定星期的日期)

时间:2018-11-22 12:40:12

相关推荐

java8日期计算(偏移N周 返回指定星期的日期)

使用举例:指定一个日期:如-08-26,返回两周前的周五,返回-08-12

一、工具类

package com.example.demo;import java.time.DayOfWeek;import java.time.LocalDate;public class MyDataTimeUtil {/*** 获取前n个月* @param n 数值* @param localDate 比较时间* @return*/public static LocalDate getLastMonth(LocalDate localDate, int n) {return localDate.minusMonths(n);}/*** 获取后n个月* @param n 数值* @param localDate 比较时间* @return*/public static LocalDate getNextMonth(LocalDate localDate, int n) {return localDate.plusMonths(n);}/*** 获取前n个月* @param n 数值* @return*/public static LocalDate getLastMonth(int n) {return getLastMonth(LocalDate.now(), n);}/*** 获取后n个月* @param n 数值* @return*/public static LocalDate getNextMonth(int n) {return getNextMonth(LocalDate.now(), n);}/*** 获取开始时间的dayOfWeek的日期* @param localDate 开始时间* @param dayOfWeek 周几* @return 日期*/public static LocalDate getCurrentWeekMonday(LocalDate localDate,DayOfWeek dayOfWeek) {int weekValue = localDate.getDayOfWeek().getValue();int paramWeekValue = dayOfWeek.getValue();if (weekValue == paramWeekValue) {return localDate;}if(paramWeekValue>weekValue){return localDate.plusDays(paramWeekValue - weekValue);}else {return localDate.minusDays(weekValue - paramWeekValue);}}/*** 获取当前时间的dayOfWeek的日期* @param dayOfWeek 周几* @return 日期*/public static LocalDate getCurrentWeekMonday(DayOfWeek dayOfWeek) {return getCurrentWeekMonday(LocalDate.now(),dayOfWeek);}/*** 获取开始时间的dayOfWeek的日期* @param localDate 开始时间* @param dayOfWeek 周几* @param n n周前* @return*/public static LocalDate getLastWeekMonday(LocalDate localDate,DayOfWeek dayOfWeek,int n) {localDate = localDate.minusDays(n*7);return getCurrentWeekMonday(localDate,dayOfWeek);}/*** 获取当前时间的dayOfWeek的日期* @param dayOfWeek 周几* @param n n周前* @return*/public static LocalDate getLastWeekMonday(DayOfWeek dayOfWeek,int n) {LocalDate localDate = LocalDate.now().minusDays(n*7);return getCurrentWeekMonday(localDate,dayOfWeek);}/*** 获取开始时间的dayOfWeek的日期* @param localDate 开始时间* @param dayOfWeek 周几* @param n n周后* @return*/public static LocalDate getNextWeekMonday(LocalDate localDate,DayOfWeek dayOfWeek,int n) {localDate = localDate.plusDays(n*7);return getCurrentWeekMonday(localDate,dayOfWeek);}/*** 获取开始时间的dayOfWeek的日期* @param dayOfWeek 周几* @param n n周后* @return*/public static LocalDate getNextWeekMonday(DayOfWeek dayOfWeek,int n) {LocalDate localDate = LocalDate.now().plusDays(n*7);return getCurrentWeekMonday(localDate,dayOfWeek);}}

二、测试代码

public static void main(String[] args) {//日期LocalDate localDate = LocalDate.of(,8,26);//当前日期 -08-26System.out.println(localDate);//-08-26是那一年 System.out.println(localDate.getYear());//-08-26的月份 8System.out.println(localDate.getMonth().getValue());//-08-26是本月的第几天 26System.out.println(localDate.getDayOfMonth());//-08-26是周几 5System.out.println(localDate.getDayOfWeek().getValue());//-08-26是当年的第多少天 238System.out.println(localDate.getDayOfYear());System.out.println("------------");//获取-8-22前一个月 7System.out.println(MyDataTimeUtil.getLastMonth(localDate,1).getMonthValue());//获取-8-22后一个月 9System.out.println(MyDataTimeUtil.getNextMonth(localDate,1).getMonthValue());//获取-8-22,所在周的周一 -08-22System.out.println(MyDataTimeUtil.getCurrentWeekMonday(localDate,DayOfWeek.MONDAY));//获取-8-22,两周前的周五 -08-12System.out.println(MyDataTimeUtil.getLastWeekMonday(localDate,DayOfWeek.FRIDAY,2));//获取-8-22,一周后的周一 -08-29System.out.println(MyDataTimeUtil.getNextWeekMonday(localDate,DayOfWeek.MONDAY,1));}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。