DateUtils时间工具类二

package com.opensesame.core.util;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.TemporalField;
import java.time.temporal.WeekFields;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**

  • 时间工具类

  • @author sonny
    */
    public class DateUtils {

    public static final String DATE_TIME_FORMAT = “yyyy-MM-dd HH:mm:ss”;

    public static final String DATE_TIME_FORMAT_NYR = “yyyy年MM月dd日”;

    public static final String DATE_TIME_FORMAT1 = “yyyy-MM-dd HH:mm”;

    public static final String DATE_FORMAT = “yyyy-MM-dd”;

    public static final String TIME_FORMAT = “HH:mm:ss”;

    public static final String YYYYMM_FORMAT = “yyyyMM”;

    public static final String YYMMDD_FORMAT = “yyMMdd”;

    public static final String YYMM_FORMAT = “yyMM”;

    public static final String D_FORMAT = “d”;

    public static final String H = “H”;

    public static final Integer ONE_DAY_MILLISECONDS = 1000 * 60 * 60 * 24;

    public static final Integer ONE_HOUR_MILLISECONDS = 1000 * 60 * 60;

    public static final Long ONE_DAY_MILLISECONDSL = 1000 * 60 * 60 * 24l;

    public static final Integer ONE_DAY_MILLISECONDS_END = ONE_DAY_MILLISECONDS - 1;

    public static List getPeriodSunday(long startDate, long endDate) {
    List sunday = new ArrayList<>();
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(startDate);
    calendar.setFirstDayOfWeek(Calendar.MONDAY);
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    Long firstSunday = calendar.getTimeInMillis();
    if (firstSunday > endDate) {
    return sunday;
    }
    sunday.add(firstSunday);
    for (; ; ) {
    firstSunday += 7 * 24 * 60 * 60 * 1000;
    if (firstSunday > endDate) {
    break;
    }
    sunday.add(firstSunday);
    }
    return sunday;
    }

    public static List getPeriodDate(long startDate, long endDate) {
    List date = new ArrayList();
    if (startDate > endDate) {
    return date;
    }
    Long start = Long.parseLong(DateFormatUtils.format(startDate, DateUtils.YYMM_FORMAT));
    Long end = Long.parseLong(DateFormatUtils.format(endDate, DateUtils.YYMM_FORMAT));
    date.add(start);
    if (start.equals(end)) {
    return date;
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(startDate);
    for (; ; ) {
    calendar.add(Calendar.MONTH, 1);
    start = Long.parseLong(DateFormatUtils.format(calendar.getTimeInMillis(), DateUtils.YYMM_FORMAT));
    date.add(start);
    if (start.equals(end)) {
    break;
    }
    }
    return date;
    }

//向前推一天,得到前一天的开始时间
public static String getBeforeNDayTimeMillis(Long time, int n) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time);
cal.add(Calendar.DATE, -n);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return getStrDate(cal.getTimeInMillis());
}

public static List<Integer> getPeriodDays(long startDate, long endDate) {
    List<Integer> date = new ArrayList<Integer>();
    if (startDate > endDate) {
        return date;
    }
    Integer start = Integer.parseInt(DateFormatUtils.format(startDate, DateUtils.D_FORMAT));
    Integer end = Integer.parseInt(DateFormatUtils.format(endDate, DateUtils.D_FORMAT));
    date.add(start);
    if (start.equals(end)) {
        return date;
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(startDate);
    for (; ; ) {
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        start = Integer.parseInt(DateFormatUtils.format(calendar.getTimeInMillis(), DateUtils.D_FORMAT));
        date.add(start);
        if (start.equals(end)) {
            break;
        }
    }
    return date;
}

public static Integer getShardingDate() {
    return Integer.parseInt(DateFormatUtils.format(System.currentTimeMillis(), DateUtils.YYYYMM_FORMAT));
}

public static Integer getSequenceDate() {
    return Integer.parseInt(DateFormatUtils.format(System.currentTimeMillis(), DateUtils.YYMMDD_FORMAT));
}

public static Integer getPrintTime() {
    return Integer.parseInt(DateFormatUtils.format(System.currentTimeMillis(), DateUtils.H));
}

public static Date getStartDateOfDay(Long date) {
    if (date != null) {
        Calendar day = Calendar.getInstance();
        day.setTimeInMillis(date);
        day.set(Calendar.HOUR_OF_DAY, 0);
        day.set(Calendar.MINUTE, 0);
        day.set(Calendar.SECOND, 0);
        day.set(Calendar.MILLISECOND, 0);
        return day.getTime();
    } else {
        return null;
    }
}

/**
 * 获取当年3月31日结束时间
 *
 * @param date
 * @return
 */
public static Long get0331EndDate(Long date) {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.MONTH, 2);
    cal.set(Calendar.DAY_OF_MONTH, 31);
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);
    return cal.getTimeInMillis();
}

public static Date getEndDateOfDay(Long date) {
    if (date != null) {
        Calendar day = Calendar.getInstance();
        day.setTimeInMillis(date);
        day.set(Calendar.HOUR_OF_DAY, 23);
        day.set(Calendar.MINUTE, 59);
        day.set(Calendar.SECOND, 59);
        day.set(Calendar.MILLISECOND, 999);
        return day.getTime();
    } else {
        return null;
    }
}

/**
 * 获取日期
 *
 * @param date
 * @return yyyy年MM月dd日
 */
public static String getStrDateNYR(Long date) {
    SimpleDateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT_NYR);// 设置日期格式
    return df.format(date);
}

/**
 * 获取字符串时间
 *
 * @param date 时间戳
 * @return 返回时间字符串:yyyy-MM-dd HH:mm:ss
 */
public static String getStrDate(Long date) {
    SimpleDateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT);// 设置日期格式
    return df.format(date);
}


/**
 * 获取字符串时间
 *
 * @param date 时间戳
 * @return 返回时间字符串:yyyy-MM-dd
 */
public static String getStrDateTime(Long date) {
    SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT);// 设置日期格式
    return df.format(date);
}


/**
 * 根据给定时间获取当天的开始时间
 *
 * @param date
 * @return
 */
public static Long getStartTimeOfDay(Long date) {
    if (date != null) {
        Calendar day = Calendar.getInstance();
        day.setTimeInMillis(date);
        day.set(Calendar.HOUR_OF_DAY, 0);
        day.set(Calendar.MINUTE, 0);
        day.set(Calendar.SECOND, 0);
        day.set(Calendar.MILLISECOND, 0);
        return day.getTimeInMillis();
    } else {
        return null;
    }
}

/**
 * 根据给定时间获取当天的结束时间
 *
 * @param date
 * @return
 */
public static Long getEndTimeOfDay(Long date) {
    if (date != null) {
        Calendar day = Calendar.getInstance();
        day.setTimeInMillis(date);
        day.set(Calendar.HOUR_OF_DAY, 23);
        day.set(Calendar.MINUTE, 59);
        day.set(Calendar.SECOND, 59);
        day.set(Calendar.MILLISECOND, 999);
        return day.getTimeInMillis();
    } else {
        return null;
    }

}

/**
 * @throws
 * @Title: getAfterNDayTimeMillis
 * @Description: 获取给定时间n天后的0点时间
 * @param:
 * @return: Long
 */
public static Long getAfterNDayTimeMillis(Long time, int n) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(time);
    cal.add(Calendar.DATE, n);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTimeInMillis();
}

/**
 * 小时转换毫秒数
 */
public static Long getHoutTime(Long hour) {
    if (hour == 1l) {
        hour = 1l * 30 * 60 * 1000;
    } else {
        hour = 1l * 60 * 60 * 1000;
    }
    return hour;
}

/**
 * 时效日期
 */
public static Long AgingTime(Integer agingTimeDays, Long createTime) {
    Long agingTime;
    if (createTime != null) {
        agingTime = DateUtils.getEndTimeOfDay(agingTimeDays * 60 * 60 * 24 * 1000 + createTime);
        return agingTime;
    } else {
        Long currentTime = Calendar.getInstance().getTimeInMillis();
        agingTime = DateUtils.getEndTimeOfDay(agingTimeDays * 60 * 60 * 24 * 1000 + currentTime);
        return agingTime;
    }
}

/**
 * 根据给定时间获取当月全部天数
 *
 * @param date
 * @return
 */
public static int getDaysOfMonth(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(date);
    return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}

/**
 * 根据给定时间获取日期在本月的第几天
 *
 * @param date
 * @return
 */
public static int getDay(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(date);
    return calendar.get(Calendar.DAY_OF_MONTH);
}

/**
 * 获得此时间所在月的天数
 */
public static int[] getMonthDay(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(date);
    int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    int[] days = new int[maxDay];
    for (int i = 1; i <= maxDay; i++) {
        days[i - 1] = i;
    }
    return days;
}

/**
 * 根据给定时间获取日期在的月份(此方法结果需要+1才是正确月份)
 *
 * @param date
 * @return
 */
public static int getMonth(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(date);
    return calendar.get(Calendar.MONTH);
}

/**
 * 根据给定的时间获取日期所在的年份
 *
 * @param date
 * @return
 */
public static int getYear(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(date);
    return calendar.get(Calendar.YEAR);
}

/**
 * 获得此时间所在月的天数
 */
public static int[] getMonthDays(Long date) {
    String da = getStrDate(date);
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, Integer.parseInt(da.substring(0, 4)));
    calendar.set(Calendar.MONTH, Integer.parseInt(da.substring(5, 7)) - 1);
    int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    int[] days = new int[maxDay];
    for (int i = 1; i <= maxDay; i++) {
        days[i - 1] = i;
    }
    return days;
}

/**
 * 获取日期所在月份的第一天
 *
 * @param date
 * @return
 */
public static Long getStartDayOfMonth(Long date) {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, getYear(date));
    cal.set(Calendar.MONTH, getMonth(date));
    cal.set(Calendar.DAY_OF_MONTH, 1);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTimeInMillis();
}

// public static void main(String[] args) {
// System.out.println(getLastYearTime(1646064000000L));
// }
/**
* 获取去年的时间戳
* @param date
* @return
/
public static Long getLastYearTime(Long date){
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date);
cal.add(Calendar.YEAR, -1);
return cal.getTimeInMillis();
}
/
*
* 获取日期去年所在月份的第一天
*
* @param date
* @return
*/
public static Long getLastYearStartDayOfMonth(Long date) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, getYear(date)-1);
cal.set(Calendar.MONTH, getMonth(date));
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTimeInMillis();
}

/**
 * 获取本年度第一天
 */
public static Long getYearLast(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, getYear(date));
    Long currYearFirst = calendar.getTimeInMillis();
    return currYearFirst;

}

/**
 * 获取本年度第一天(YEAR-2018)
 */
public static Long getYearFirst(Long year) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, Math.toIntExact(year));
    Long currYearFirst = calendar.getTimeInMillis();
    return currYearFirst;

}


/**
 * 获取日期所在月份的最后一天
 *
 * @param date
 * @return
 */
public static Long getLastDayOfMonth(Long date) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(date);
    int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    cal.set(Calendar.DAY_OF_MONTH, lastDay);
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);
    return cal.getTimeInMillis();
}

/**
 * 传入时间字符串转化成时间挫毫秒
 */
public static Long stringDateToTimes(String date, String format) {
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    try {
        return sdf.parse(date).getTime();
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return 0l;

}


/**
 * 获取两个时间段内,每天的开始时间
 *
 * @param startTime
 * @param endTime
 * @return
 */
public static List<Long> getEveryDayStartTime(Long startTime, Long endTime) {
    List<Long> list = new ArrayList<>();
    Long start = getStartTimeOfDay(startTime);
    list.add(start);

    while (endTime - start > ONE_DAY_MILLISECONDS) {
        start += ONE_DAY_MILLISECONDS;
        list.add(start);
    }
    return list;
}

/*
 * 将时间转换为时间戳
 */
public static Long dateToStamp(String s) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
    Date date = simpleDateFormat.parse(s);
    long ts = date.getTime();
    return ts;
}

/*
 * 将yyyy-MM时间转换为时间戳
 */
public static Long dateToStampMonth(String s) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
    Date date = simpleDateFormat.parse(s);
    long ts = date.getTime();
    return ts;
}
public static Long dateToStampYMD(String s) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date = simpleDateFormat.parse(s);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
   // calendar.set(Calendar.MILLISECOND, 1000);
    return calendar.getTimeInMillis();
}
/*
 * 获得当前时间的本月4号开始时间
 */
public static Long dateToStamp10() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, 0);
    calendar.set(Calendar.DAY_OF_MONTH, 4);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTimeInMillis();
}

/**
 * 费用项导入 临时调整为  2月1号上午10点可导入费用项
 */
public static Long dateToStamp1() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, 0);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.set(Calendar.HOUR_OF_DAY, 10);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTimeInMillis();
}


/**
 * 获取本年度最后一天
 */
public static Long getYearEnd(Long year) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, Math.toIntExact(year));
    calendar.set(Calendar.MONTH, 11);//月份减一
    calendar.set(Calendar.DAY_OF_MONTH, 31);
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    calendar.set(Calendar.MILLISECOND, 999);
    return calendar.getTimeInMillis();
}


/**
 * 获取某年最后一天日期
 *
 * @param year 年份
 * @return Date
 */
public static Long getYearLast(int year) {
    Calendar calendar = Calendar.getInstance();
    calendar.clear();
    calendar.set(Calendar.YEAR, year);
    calendar.roll(Calendar.DAY_OF_YEAR, -1);
    //Date currYearLast = calendar.getTime();

    return calendar.getTimeInMillis();
}

/**
 * 获取某时间段内的每个日期
 *
 * @param startDate
 * @param endDate
 * @return
 */
public static List<Long> getPeriodDates(long startDate, long endDate) {
    List<Long> date = new ArrayList<>();
    if (startDate > endDate) {
        return date;
    }
    Long start = getStartTimeOfDay(startDate);
    Long end = getStartTimeOfDay(endDate);
    date.add(start);
    if (start.equals(end)) {
        return date;
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(start);
    for (; ; ) {
        calendar.add(Calendar.DATE, 1);
        start = calendar.getTimeInMillis();
        date.add(start);
        if (start.equals(end)) {
            break;
        }
    }
    return date;
}

/**
 * 获取字符串时间
 *
 * @param format 时间格式
 * @param date   时间戳
 * @return
 */
public static String getStrDate(Long date, String format) {
    SimpleDateFormat df = new SimpleDateFormat(format);// 设置日期格式
    return df.format(date);
}

/**
 * @return
 * @Author lihaiming
 * @Description //TODO 获取下个月当前天的时间
 * @Date 2019/7/8 13:44
 * @Param
 **/
public static Long getNextMonthTime(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(getStartTimeOfDay(date));
    calendar.add(Calendar.MONTH, 1);
    return calendar.getTimeInMillis();
}

/**
 * 获取第二天上午十点时间
 *
 * @param date
 * @return
 */
public static Long getTomorrow10AM(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(getStartTimeOfDay(date));
    calendar.add(Calendar.DATE, 1);
    calendar.add(Calendar.HOUR_OF_DAY, 10);
    return calendar.getTimeInMillis();
}

/**
 * 获取后天10:30的时间 _____最新需求 由 十点半改成10点
 *
 * @param date
 * @return
 */
public static Long getAfterTwoDay1030AM(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(getStartTimeOfDay(date));
    calendar.add(Calendar.DATE, 2);
    calendar.add(Calendar.HOUR_OF_DAY, 10);

// calendar.add(Calendar.MINUTE,30);
return calendar.getTimeInMillis();
}

/**
 * 获取当天上午十点时间
 *
 * @param date
 * @return
 */
public static Long get10AM(Long date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(getStartTimeOfDay(date));
    calendar.add(Calendar.DATE, 0);
    calendar.add(Calendar.HOUR_OF_DAY, 10);
    return calendar.getTimeInMillis();
}

/**
 * 获取上个月的0点0分0秒
 *
 * @return
 */
public static Long getLastMonthStartDay() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, -1);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTimeInMillis();
}

/**
 * 获取上个月的最后一天0点0分0秒
 *
 * @return
 */
public static Long getLastMonthEndDay() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, -1);
    calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DATE));
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTimeInMillis();
}

/**
 * 获取本周开始时间
 *
 * @param time
 * @return
 */
public static Long getBeginTimeOfWeek(Long time) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(time);
    int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
    if (dayofweek == 1) {
        dayofweek += 7;
    }
    cal.add(Calendar.DATE, 2 - dayofweek);
    return getStartTimeOfDay(cal.getTimeInMillis());
}

/**
 * 获取本周结束时间
 *
 * @param time
 * @return
 */
public static Long getEndTimeOfWeek(Long time) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(time);
    int dayofweek = cal.get(Calendar.DAY_OF_WEEK)-1;
    if (dayofweek == 0) {
        dayofweek = 7;
    }
    cal.add(Calendar.DATE,  - dayofweek+7);
    return getEndTimeOfDay(cal.getTimeInMillis());
}

/**
 * @return
 * @MethodName 获取当年的总周数
 * @Description TODO
 * @Param
 */
public static Integer getWeekCount(Long year) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Math.toIntExact(year), 2, 5);
    calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天

// calendar.setTimeInMillis(time);//获得时间戳
int weeksInWeekYear = calendar.getWeeksInWeekYear();
return weeksInWeekYear;
}

/**
 * 判断两个日期相隔天数
 *
 * @param startTime
 * @param endTime
 * @return
 */
public static Integer differentDaysByMillisecond(Long startTime, Long endTime) {
    return (int) ((getStartTimeOfDay(endTime) - getStartTimeOfDay(startTime)) / ONE_DAY_MILLISECONDS);
}

/**
 * @return
 * @MethodName dayForWeek
 * @Description TODO  判断当前日期是星期几
 * @Param 2020-03-16
 * @Date 2020/3/16 22:42
 */
public static String dayForWeek(String pTime) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date tmpDate = null;
    try {
        tmpDate = format.parse(pTime);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Calendar cal = Calendar.getInstance();
    String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    try {
        cal.setTime(tmpDate);
    } catch (Exception e) {
        e.printStackTrace();
    }
    int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
    if (w < 0)
        w = 0;
    return weekDays[w];
}

/**
 * 获取指定年、月份的第一天
 *
 * @param year
 * @param month
 * @return
 */
public static Long getStartTimeOfMonth(Integer year, Integer month) {
    Calendar cal = Calendar.getInstance();
    cal.clear();
    cal.set(Calendar.YEAR, year);
    cal.set(Calendar.MONTH, month);
    return cal.getTimeInMillis();
}

/**
 * 获取指定年、月份的最后一天
 *
 * @param year
 * @param month
 * @return
 */
public static Long getEndTimeOfMonth(Integer year, Integer month) {
    Calendar cal = Calendar.getInstance();
    cal.clear();
    cal.set(Calendar.YEAR, year);
    cal.set(Calendar.MONTH, month);
    cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
    cal.set(Calendar.HOUR_OF_DAY, cal.getActualMaximum(Calendar.HOUR_OF_DAY));
    cal.set(Calendar.MINUTE, cal.getActualMaximum(Calendar.MINUTE));
    cal.set(Calendar.SECOND, cal.getActualMaximum(Calendar.SECOND));
    cal.set(Calendar.MILLISECOND, cal.getActualMaximum(Calendar.MILLISECOND));
    return cal.getTimeInMillis();
}

// public static void main(String[] args) throws ParseException {
// System.out.println(dateToStampYMD(“2022-01-30”));
System.out.println(getStrDate(getEndTimeOfMonth(2019, -2)));
// }

/**
 * 得到两日期相差几个月
 *
 * @param
 * @return
 */

public static long getMonthDiff(String startDate, String endDate) {
    long monthday = 0;
    try {
        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate1 = fmt.parse(startDate);
        Calendar starCal = Calendar.getInstance();
        starCal.setTime(startDate1);
        int sYear = starCal.get(Calendar.YEAR);
        int sMonth = starCal.get(Calendar.MONTH);
        int sDay = starCal.get(Calendar.DAY_OF_MONTH);
        Date endDate1 = fmt.parse(endDate);
        Calendar endCal = Calendar.getInstance();
        endCal.setTime(endDate1);
        int eYear = endCal.get(Calendar.YEAR);
        int eMonth = endCal.get(Calendar.MONTH);
        int eDay = endCal.get(Calendar.DAY_OF_MONTH);
        monthday = ((eYear - sYear) * 12 + (eMonth - sMonth));
        //这里计算零头的情况,根据实际确定是否要加1 还是要减1
        if (sDay < eDay) {
            monthday = monthday + 1;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return monthday;
}

/**
 * 获取去年日期所在月份的最后一天
 *
 * @param date
 * @return
 */
public static Long getLastYearEndDayOfMonth(Long date) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(date);
    cal.add(Calendar.YEAR, -1);
    int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    cal.set(Calendar.DAY_OF_MONTH, lastDay);
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);
    return cal.getTimeInMillis();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值