123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- package com.fdkankan.manage.util;
- import org.apache.commons.lang3.StringUtils;
- import java.text.SimpleDateFormat;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.TemporalAdjusters;
- import java.util.*;
- public class Dateutils {
- public static int DAY = Calendar.DAY_OF_MONTH;
- public static int WEEK = Calendar.WEEK_OF_MONTH;
- public static int MONTH = Calendar.MONTH;
- public static String orderSn = "yyyyMMddHHmmssSSS";
- /**
- * 获取指定时间区间的所有数据(包含日期和月份)
- * @param dBegin
- * @param dEnd
- * @param rule 日历规则 如:Calendar.DAY_OF_MONTH
- * @return
- */
- public static List<Date> findDates(Date dBegin, Date dEnd, int rule) {
- List<Date> lDate = new ArrayList<>();
- if (dEnd.before(dBegin)){
- return lDate;
- }
- Calendar calBegin = Calendar.getInstance();
- // 使用给定的 Date 设置此 Calendar 的时间
- calBegin.setTime(dBegin);
- Calendar calEnd = Calendar.getInstance();
- // 使用给定的 Date 设置此 Calendar 的时间
- calEnd.setTime(dEnd);
- // 测试此日期是否在指定日期之后
- while (dEnd.after(calBegin.getTime())) {
- // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
- Date time = calBegin.getTime();
- if(rule == Calendar.WEEK_OF_MONTH){
- time = getMonday(time);
- }
- lDate.add(time);
- calBegin.add(rule, 1);
- }
- return lDate;
- }
- public static List<String> findDatesStr(Date dBegin, Date dEnd, int rule) {
- List<String> datesStr = new ArrayList<>();
- List<Date> dates = findDates(dBegin, dEnd, rule);
- for (Date date : dates) {
- String day ;
- if(rule == MONTH){
- day =getMonthDate(date);
- }else {
- day = getDayDate(date);
- }
- datesStr.add(day);
- }
- return datesStr;
- }
- public static Date getDate(String date) {
- try {
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
- }catch (Exception e){
- e.printStackTrace();
- }
- return new Date();
- }
- public static Date getMonday(Date date) {
- Calendar calBegin = Calendar.getInstance();
- calBegin.setTime(date);
- calBegin.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //周一
- return calBegin.getTime();
- }
- public static String getDate(Date date) {
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
- }
- public static String getDateN(Date date) {
- return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
- }
- public static String getMonthDate(Date date) {
- return new SimpleDateFormat("yyyy-MM").format(date);
- }
- public static Date getMonthDate(String date) {
- try {
- return new SimpleDateFormat("yyyy-MM").parse(date);
- }catch (Exception e){
- e.printStackTrace();
- }
- return new Date();
- }
- public static String getDayDate(Date date) {
- return new SimpleDateFormat("yyyy-MM-dd").format(date);
- }
- public static String getDayZeroDate(Date date) {
- return new SimpleDateFormat("yyyy-MM-dd").format(date) +" 00:00:00";
- }
- public static String getHalfYearStr() {
- return new SimpleDateFormat("yyyy-MM-dd").format(getHalfYear())+" 00:00:00";
- }
- public static Date getHalfYear() {
- Calendar c = Calendar.getInstance();
- c.setTime(new Date());
- c.add(Calendar.MONTH, -6);
- return c.getTime();
- }
- public static String getLastMonTh(Date date){
- Calendar ca = Calendar.getInstance();
- ca.setTime(date);
- ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
- return new SimpleDateFormat("yyyy-MM-dd").format(ca.getTime()) +" 23:59:59";
- }
- public static String formatStartTime(String startTime) {
- if(StringUtils.isBlank(startTime)){
- startTime = Dateutils.getHalfYearStr();
- }
- if(startTime.length() <12){ //月,开始时间到1号 0点
- startTime += " 00:00:00";
- }
- return startTime;
- }
- public static String formatEndTime(String endTime) {
- if(StringUtils.isBlank(endTime)){
- endTime = Dateutils.getDate(new Date());
- }
- if(endTime.length() <12 ){ //月,开始时间到1号 0点
- endTime += " 23:59:59";
- }
- return endTime;
- }
- public static String getStartTime(String startTime) {
- if(StringUtils.isBlank(startTime)){
- return null;
- }
- if(startTime.length() > 12){
- return startTime;
- }
- return startTime +" 00:00:00";
- }
- public static String getEndTime(String endTime) {
- if(StringUtils.isBlank(endTime)){
- return null;
- }
- if(endTime.length() > 12){
- return endTime;
- }
- return endTime +" 23:59:59";
- }
- public static final String DEF_FMT = "yyyy-MM-dd HH:mm:ss";
- public static String AddMinute(String date, Integer minute){
- SimpleDateFormat sdf = new SimpleDateFormat(DEF_FMT);
- try {
- Date time = sdf.parse(date);
- return AddMinute(time,minute);
- }catch (Exception e){
- e.printStackTrace();
- }
- return date;
- }
- public static String AddMinute(Date date, Integer minute){
- SimpleDateFormat sdf = new SimpleDateFormat(DEF_FMT);
- Calendar nowTime = Calendar.getInstance();
- nowTime.setTime(date);
- nowTime.add(Calendar.MINUTE, ~minute);
- return sdf.format(nowTime.getTime());
- }
- public synchronized static String getOrderSn() {
- try {
- Thread.sleep(1L);
- }catch (Exception e){
- }
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat(orderSn);
- Date date = new Date();
- return simpleDateFormat.format(date);
- }
- /*日期加+1年*/
- public static Date dateAddOneYear(Date date,Integer i) {
- Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
- calendar.add(Calendar.YEAR,i); //把日期往后增加一天,整数 往后推,负数往前移动
- date=calendar.getTime(); //这个时间就是日期往后推一天的结果
- return date;
- }
- /*日期加+1月*/
- public static Date dateAddOneMonth(Date date,Integer i) {
- Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
- calendar.add(Calendar.MONTH,i); //把日期往后增加一天,整数 往后推,负数往前移动
- date=calendar.getTime(); //这个时间就是日期往后推一天的结果
- return date;
- }
- /*日期加+1天*/
- public static Date dateAddOne(Date date,Integer i) {
- Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
- calendar.add(Calendar.DATE,i); //把日期往后增加一天,整数 往后推,负数往前移动
- date=calendar.getTime(); //这个时间就是日期往后推一天的结果
- return date;
- }
- }
|