ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA DateUtils

2020-12-10 13:31:02  阅读:172  来源: 互联网

标签:DateUtils return static cal Date JAVA Calendar public


package *.common.utils;

import lombok.extern.slf4j.Slf4j;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;

@Slf4j
public class DateUtils {

    /**
     * (ForExample)当前时间:2019-07-01 20:51:05
     *
     * @return
     */
    public static String getTimeStr2() {
        Date date = new Date();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timeStr2 = sf.format(date);
        return timeStr2.substring(0, 10);
    }

    /**
     * 获取年
     * @return
     */
    public static String getDateYear(Date date) {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timeStr2 = sf.format(date);
        return timeStr2.substring(0, 4);
    }

    /**
     * 获取月
     * @param date
     * @return
     */
    public static String getDateMonth(Date date) {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timeStr2 = sf.format(date);
        return timeStr2.substring(5, 7);
    }

    /**
     * 获取天
     * @param date
     * @return
     */
    public static String getDateDay(Date date) {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timeStr2 = sf.format(date);
        return timeStr2.substring(8, 10);
    }

    /**
     * 获取当天开始时间
     *
     * @return
     */
    public static Date getDayBegin() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 0);//0点
        cal.set(Calendar.MINUTE, 0);//0分
        cal.set(Calendar.SECOND, 0);//0秒
        cal.set(Calendar.MILLISECOND, 0);//0毫秒
        return cal.getTime();
    }

    /**
     * 获取当天结束时间
     *
     * @return
     */
    public static Date getDayEnd() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 23);//23点
        cal.set(Calendar.MINUTE, 59);//59分
        cal.set(Calendar.SECOND, 59);//59秒
        return cal.getTime();
    }

    /**
     * 获取昨天结束时间
     *
     * @return
     */
    public static Date getEndDayOfYesterday() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayEnd());//当天结束时间
        cal.add(Calendar.DAY_OF_MONTH, -1);//当天月份天数减1
        return cal.getTime();
    }


    /**
     * 获取前天结束时间
     *
     * @return
     */
    public static Date getEndDayOfYesterday2() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayEnd());//当天结束时间
        cal.add(Calendar.DAY_OF_MONTH, -2);//当天月份天数减1
        return cal.getTime();
    }


    /**
     * 获取昨天开始时间
     *
     * @return
     */
    public static Date getBeginDayOfYesterday() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());//当天开始时间
        cal.add(Calendar.DAY_OF_MONTH, -1);//当天月份天数减1
        return cal.getTime();
    }

    /**
     * 获取前天开始时间
     *
     * @return
     */
    public static Date getBeginDayOfYesterday2() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());//当天开始时间
        cal.add(Calendar.DAY_OF_MONTH, -2);//当天月份天数减1
        return cal.getTime();
    }


    /**
     * 上上月第一天
     * @return
     */
    public static Date getBeginDayOfMonthBefore2(){
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.add(Calendar.MONTH, -2);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return cal.getTime();
    }



    /**
     * 月份+N
     * @return
     */
    public static Date getMonthInc(Date date , int month) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.MONTH, month);
        return cal.getTime();
    }


    /**
     * 月份+N
     * @return
     */
    public static Date getHourInc(Date date , int hour) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.HOUR, hour);
        return cal.getTime();
    }





    /**
     * 上上月最后一日
     * @return
     */
    public static Date getBeginDayOfMonthAfter2(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayEnd());
        int month=cal.get(Calendar.MONTH);
        cal.set(Calendar.MONTH, month-2);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        return cal.getTime();
    }




    /**
     * 下月第一天
     * @return
     */
    public static Date getBeginDayOfMonthDown(){
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.add(Calendar.MONTH, +1);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return cal.getTime();
    }


    /**
     * 下月最后一日
     * @return
     */
    public static Date getEndDayOfMonthDown(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayEnd());
        int month=cal.get(Calendar.MONTH);
        cal.set(Calendar.MONTH, month+1);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        return cal.getTime();
    }




    /**
     * 上月第一天
     * @return
     */
    public static Date getBeginDayOfMonthBefore(){
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return cal.getTime();
    }


    /**
     * 上月最后一日
     * @return
     */
    public static Date getBeginDayOfMonthAfter(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayEnd());
        int month=cal.get(Calendar.MONTH);
        cal.set(Calendar.MONTH, month-1);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        return cal.getTime();
    }


    /**
     * 当月第一天
     * @return
     */
    public static Date getBeginDayOfMonth(){
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.add(Calendar.MONTH, 0);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return cal.getTime();
    }

    /**
     * 当月最后一日
     * @return
     */
    public static Date getEndDayOfMonth(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayEnd());
        cal.add(Calendar.MONTH, 1);
        cal.set(Calendar.DAY_OF_MONTH, 0);
        return cal.getTime();
    }

    /**
     * date类型进行格式化输出(返回类型:String)
     *
     * @param date
     * @return
     */
    public static String dateFormat(Date date) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String dateString = formatter.format(date);
        return dateString;
    }

    /**
     * 获取当前时间到第二天的秒数
     *
     * @return
     */
    public static Long getSecondsNextEarlyMorning() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_YEAR, 1);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
    }

    /**
     * 获取本周第一天
     * @return
     */
    public static Date getBeginDayOfWeek(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.add(Calendar.WEEK_OF_MONTH, 0);
        cal.set(Calendar.DAY_OF_WEEK, 2);
        return cal.getTime();
    }


    /**
     * 获取上周第一天
     * @return
     */
    public static Date getBeginDayOfWeekTop(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.set(Calendar.DAY_OF_WEEK,1);
        cal.add(Calendar.DATE, -6);
        return cal.getTime();
    }



    /**
     * 获取上上周第一天
     * @return
     */
    public static Date getBeginDayOfWeek2Top(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.set(Calendar.DAY_OF_WEEK,1);
        cal.add(Calendar.DATE, -13);
        return cal.getTime();
    }



    /**
     * 获取本周最后一日
     * @return
     */
    public static Date getEndDayOfWeek(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayEnd());
        cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
        cal.add(Calendar.DAY_OF_WEEK, 1);
        return cal.getTime();
    }

    /**
     * 获取上周最后一日
     * @return
     */
    public static Date getEndDayOfWeekTop(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayEnd());
        cal.set(Calendar.DAY_OF_WEEK,1);
        cal.add(Calendar.DATE, 0);
        return cal.getTime();
    }


    /**
     * 本年第一天
     * @return
     */
    public static Date getBeginDayOfYear(){
        //Date now = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());
        //cal.setTime(now);
        cal.set(Calendar.DAY_OF_YEAR, 1);
        return cal.getTime();
    }

    /**
     * 下一年第一天
     * @return
     */
    public static Date getBeginDayOfNextYear(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.add(Calendar.YEAR, 1);
        cal.set(Calendar.DAY_OF_YEAR, 1);
        return cal.getTime();
    }



    /**
     * 本年最后一日
     * @return
     */
    public static Date getEndDayOfYear(){
        Calendar cal=Calendar.getInstance();
        cal.setTime(getDayEnd());
        cal.add(Calendar.YEAR, 1);
        cal.set(Calendar.DAY_OF_YEAR, -1);
        return cal.getTime();
    }


    /**
     * 获取当天前7天时间
     *
     * @return
     */
    public static Date getDayBeforeSeven() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDayBegin());
        cal.add(Calendar.DAY_OF_MONTH, -7);//当天月份天数减1
        return cal.getTime();
    }

    /**
     * 天数+N
     *
     * @return
     */
    public static Date getDayInc(Date date , int day) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DAY_OF_MONTH, day);
        return c.getTime();
    }


    /**
     * 两个日期间 相差月份
     * @param date1
     * @param date2
     * @return
     */
    public static int getMonthSpace(String date1, String date2){
        try {
            int result = 0;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sdf.parse(date1));
            c2.setTime(sdf.parse(date2));
            result =  c2.get(Calendar.HOUR) - c1.get(Calendar.MONTH) + ( (c2.get(Calendar.YEAR)  - c1.get(Calendar.YEAR)) * 12  ) ;
            return result == 0 ? 1 : Math.abs(result);
        }catch (Exception e) {
            return  0;
        }
    }

    /**
     * 两个日期间 相差小时
     * @param date1
     * @param date2
     * @return
     */
    public static int getHourSpace(String date1, String date2){
        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            int result = 0;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(sdf.parse(date1));
            c2.setTime(sdf.parse(date2));
            result =  c2.get(Calendar.HOUR) - c1.get(Calendar.HOUR) + ( ((int) ((simpleDateFormat.parse(date1).getTime() - simpleDateFormat.parse(date2).getTime()) / (1000*3600*24))) * 24   ) ;
            return result == 0 ? 1 : Math.abs(result);
        }catch (Exception e) {
            return  0;
        }
    }


    public static String dateToString(Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return dateFormat.format(date);
    }


    /**
     * 自定义时间格式
     * @param date
     * @param param
     * @return
     */
    public static String dateToStringSet(Date date , String param) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(param);
        return dateFormat.format(date);
    }


    /**
     * 2个时间相差天数
     * @param s
     * @param e
     * @return
     */
    public static Integer dateDiff(String s , String e ) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date startDate   =  sdf.parse(s);
            Date endDate     =  sdf.parse(e);
            return ((int)(endDate.getTime()/1000)-(int)(startDate.getTime()/1000))/3600/24;
        }catch (Exception e1) {
            log.info("dateDiff-error:"+e1.getMessage());
            return 0;
        }
    }


    /**
     * 字符串转时间
     * @param s
     * @return
     */
    public static Date stringToDate(String s) {
        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = simpleDateFormat.parse(s);
            return date;
        }catch (Exception e) {
            return null;
        }
    }

    /**
     * date 转 localDateTime
     * @return
     */
    public static LocalDateTime dateToLocalDateTime( Date date) {
        return date.toInstant().atZone( ZoneId.systemDefault() ).toLocalDateTime();
    }






}

标签:DateUtils,return,static,cal,Date,JAVA,Calendar,public
来源: https://blog.csdn.net/qq_39191303/article/details/110951008

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有