分享在公司里使用的时间转换类型

package com.ruipos.common.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * 日期时间特殊处理类。<br/>
 *
 * 类中的方法体都为<i>static</i>方法。
 *
 * <p>
 * 在本类中所说到的format使用格式如下:<br/>
 * 年 —— yyyy <br/>
 * 月 —— MM <br/>
 * 日 —— dd <br/>
 * 时 —— HH(24小时制) hh(12小时制)<br/>
 * 分 —— mm <br/>
 * 秒 —— ss <br/>
 * yyyy-MM-dd HH:mm:ss -> "2000-01-01 00:00:01"<br/>
 * yMd a h:m:s -> "0011 上午 0:0:1"<br/>
 *
 * 常用的格式基本如上,如需其它特殊格式请参见{@link SimpleDateFormat}类。<br/>
 * 注意区分大小写。
 * </p>
 *
 * @author zhoumin
 */
public class DateUtils
{
    /**
     * 系统当前日期时间根据指定的格式时行处理后Date类型输出
     *
     * @param format
     *
     * @return
     *
     * @return Date
     *
     * @throws
     * @Title: getFormatCurrentDay
     * @author defa.huo
     * @time 2016年1月12日 上午11:07:37
     */
    public static Date getFormatCurrentDay(String format)
    {
        return strToDate(getCurrentDay(), format);
    }

    /**
     * 字符串转换为{@link java.util.Date}<br>
     *
     * @param time   要转换的日期字符串。
     * @param format 指定的格式。
     *
     * @return Date 日期。
     */

    public static Date strToDate(String time, String format)
    {
        try
        {
            SimpleDateFormat sdf  = new SimpleDateFormat(format);
            Date             date = sdf.parse(time);
            return date;
        } catch (Exception e)
        {
            return null;
        }
    }

    /**
     * 获取当前天
     *
     * @author HUIJIN
     */
    public static String getCurrentDay()
    {
        String           str = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        str = sdf.format(new Date());
        return str;
    }

    /**
     * <p>
     * 系统当前日期时间根据指定的格式时行处理,本方法会根据用户输入的format条件进行格式化,与格式无关的数据不进行转换。
     * </p>
     *
     * @param format 指定的格式。
     *
     * @return 系统当前日期时间字符串
     */
    public static String currDateFormat(String format)
    {
        Date             now = new Date();
        SimpleDateFormat f   = new SimpleDateFormat(format);
        return f.format(now);
    }

    /**
     * 获取当前月的第一天
     *
     * @return String
     */
    public static String getFirstDayOfMonth()
    {
        String str = "";
        try
        {
            SimpleDateFormat dateFormat  = new SimpleDateFormat("yyyy-MM-dd");
            Calendar         currentDate = Calendar.getInstance();
            currentDate.set(Calendar.DATE, 1);// 设为当前月的1号
            str = dateFormat.format(currentDate.getTime());
            return str;
        } catch (Exception e)
        {
            return str;
        }
    }

    /**
     * 获取给定年给定月的最后一天
     *
     * @param year  给定年
     * @param month 给定月
     */
    public static String getLastDay(String year, String month)
    {
        String lastDay = "";
        if (year != null && !year.equals("") && month != null
                && !month.equals(""))
        {
            lastDay = year + month + getDays(year, month);
        }
        return lastDay;
    }

    /**
     * 获取给定年给定月的天数
     *
     * @param year  给定年
     * @param month 给定月
     */
    public static int getDays(String year, String month)
    {
        int dateOfMonth = 0;
        if (year != null && !year.equals("") && month != null
                && !month.equals(""))
        {
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.YEAR, Integer.parseInt(year));
            cal.set(Calendar.MONTH, Integer.parseInt(month) - 1);// Java月份才0开始算
            dateOfMonth = cal.getActualMaximum(Calendar.DATE);
        }
        return dateOfMonth;
    }

    /**
     * 获取当前天的前两天
     *
     * @author HUIJIN
     */
    public static String getBeforeTwoDay()
    {
        String str         = "";
        String currentDate = getCurrentDay();
        int    intYear     = Integer.parseInt(currentDate.substring(0, 4));
        int    intMonth    = Integer.parseInt(currentDate.substring(5, 7));
        int    intDate     = Integer.parseInt(currentDate.substring(8, 10));

        Calendar cal = Calendar.getInstance();
        cal.set(intYear, intMonth - 1, intDate);
        cal.add(Calendar.DATE, -2);
        Date       date = cal.getTime();
        DateFormat df   = new SimpleDateFormat("yyyy-MM-dd");
        str = df.format(date);
        return str;
    }

    /**
     * 获取当前天的前n天
     *
     * @param n
     *
     * @return
     *
     * @return String
     *
     * @throws
     * @Title: getBeforeDay
     * @author defa.huo
     * @time 2016年8月10日 上午10:06:01
     */
    public static String getBeforeDay(Integer n)
    {
        String str         = "";
        String currentDate = getCurrentDay();
        int    intYear     = Integer.parseInt(currentDate.substring(0, 4));
        int    intMonth    = Integer.parseInt(currentDate.substring(5, 7));
        int    intDate     = Integer.parseInt(currentDate.substring(8, 10));

        Calendar cal = Calendar.getInstance();
        cal.set(intYear, intMonth - 1, intDate);
        cal.add(Calendar.DATE, -n);
        Date       date = cal.getTime();
        DateFormat df   = new SimpleDateFormat("yyyy-MM-dd");
        str = df.format(date);
        return str;
    }

    /**
     * 获取当前天的前n天
     *
     * @param n
     *
     * @return
     *
     * @return String
     *
     * @throws
     * @Title: getBeforeDay
     * @author defa.huo
     * @time 2016年8月10日 上午10:06:01
     */
    public static String getBeforeDay(Integer n, String format)
    {
        String str         = "";
        String currentDate = getCurrentDay();
        int    intYear     = Integer.parseInt(currentDate.substring(0, 4));
        int    intMonth    = Integer.parseInt(currentDate.substring(5, 7));
        int    intDate     = Integer.parseInt(currentDate.substring(8, 10));

        Calendar cal = Calendar.getInstance();
        cal.set(intYear, intMonth - 1, intDate);
        cal.add(Calendar.DATE, -n);
        Date       date = cal.getTime();
        DateFormat df   = new SimpleDateFormat(format);
        str = df.format(date);
        return str;
    }

    /**
     * 获取当前天的下一天
     *
     * @author HUIJIN
     */
    public static String getNextDay()
    {
        String str         = "";
        String currentDate = getCurrentDay();
        int    intYear     = Integer.parseInt(currentDate.substring(0, 4));
        int    intMonth    = Integer.parseInt(currentDate.substring(5, 7));
        int    intDate     = Integer.parseInt(currentDate.substring(8, 10));

        Calendar cal = Calendar.getInstance();
        cal.set(intYear, intMonth - 1, intDate);
        cal.add(Calendar.DATE, +1);
        Date       date = cal.getTime();
        DateFormat df   = new SimpleDateFormat("yyyy-MM-dd");
        str = df.format(date);
        return str;
    }

    @SuppressWarnings("deprecation")
    public static Date addDay(Date d, int day)
    {
        try
        {
            d.setDate(d.getDate() + day);
            return d;
        } catch (Exception e)
        {
            return d;
        }
    }

    @SuppressWarnings("deprecation")
    public static Date addMinute(Date d, int minute)
    {
        try
        {
            d.setMinutes(d.getMinutes() + minute);
            return d;
        } catch (Exception e)
        {
            return d;
        }
    }

    /**
     * 根据日期返回ORACLE中标准的TO_DATE()输出字符串。
     *
     * @param d 日期
     *
     * @return 字符串
     */
    public static String toDate(Date d)
    {
        return " TO_DATE('" + dateToStr(d, "yyyy-MM-dd HH:mm:ss")
                + "','YYYY-MM-DD HH24:MI:SS')";
    }

    /**
     * 将{@link java.util.Date}类型转换为指定的字符串格式<br>
     *
     * @param date   要转换的日期。
     * @param format 指定的格式。
     *
     * @return 指定格式日期型字符串。
     */
    public static String dateToStr(Date date, String format)
    {
        SimpleDateFormat f = new SimpleDateFormat(format);
        return f.format(date);
    }

    /**
     * 获取当天时间
     *
     * @param dateformat
     *
     * @return 当前时间字符串
     *
     * @author zhoumin E-mail:zhoumin_0810@163.com
     */
    public static String getNowTime(String dateformat)
    {
        Date             now        = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
        String           nowStr     = dateFormat.format(now);
        return nowStr;
    }

    /**
     * 获取当前月的最后一天
     *
     * @return String
     *
     * @author zhoumin E-mail:zhoumin_0810@163.com
     */
    public static String getEndDayOfMonth()
    {
        String           str   = "";
        Calendar         cal   = Calendar.getInstance();
        SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");
        cal.set(Calendar.DATE, 1);
        cal.roll(Calendar.DATE, -1);
        Date endTime = cal.getTime();
        str = datef.format(endTime);
        return str;
    }

    /**
     * 获取当前上个月的最后一天
     *
     * @return String
     *
     * @author kuangguangfeng
     */
    public static String getDayLastOfMonth()
    {
        String   str = "";
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -1);
        SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");
        cal.set(Calendar.DATE, 1);
        cal.roll(Calendar.DATE, -1);
        Date endTime = cal.getTime();
        str = datef.format(endTime);
        return str;
    }

    /**
     * 当前时间 减去31天
     *
     * @return
     */
    public static String getDayMonth31()
    {
        String   str = "";
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -31);
        SimpleDateFormat datef   = new SimpleDateFormat("yyyy-MM-dd");
        Date             endTime = cal.getTime();
        str = datef.format(endTime);
        return str;
    }

    /**
     * 当前时间 减去7天
     *
     * @return
     */
    public static String getDayMonth7()
    {
        String   str = "";
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -7);
        SimpleDateFormat datef   = new SimpleDateFormat("yyyy-MM-dd");
        Date             endTime = cal.getTime();
        str = datef.format(endTime);
        return str;
    }

    /**
     * 获取当前上个月
     *
     * @return String
     *
     * @author kuangguangfeng
     */
    public static String getLastOfMonth()
    {
        String   str = "";
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -1);
        SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM");
        cal.set(Calendar.DATE, 1);
        cal.roll(Calendar.DATE, -1);
        Date endTime = cal.getTime();
        str = datef.format(endTime);
        return str;
    }

    /**
     * 获取某月的最后一天
     *
     * @param date   输入的日期
     * @param format 输出的格式
     *
     * @return 该日期对应月份的最后一天日期
     *
     * @author zhoumin E-mail:zhoumin_0810@163.com
     */
    public static String getLastDateOfMonth(Date date, String format)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, cal
                .getActualMaximum(Calendar.DAY_OF_MONTH));
        return dateToStr(cal.getTime(), format);
    }

    /**
     * 日期比较
     *
     * @param DATE1
     * @param DATE2
     *
     * @return int
     */
    public static int compare_date(String DATE1, String DATE2)
    {
        if (DATE1.trim().length() == 10)
        {
            DATE1 = DATE1 + " 00:00:00";
        }
        if (DATE2.trim().length() == 10)
        {
            DATE2 = DATE2 + " 00:00:00";
        }
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        try
        {
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            if (dt1.getTime() > dt2.getTime())
            {
                return 1;
            } else if (dt1.getTime() < dt2.getTime())
            {
                return -1;
            } else
            {
                return 0;
            }
        } catch (Exception exception)
        {
            exception.printStackTrace();
        }
        return 0;
    }

    public static String getWeekStr(Date date)
    {
        String   str = "";
        Calendar c   = Calendar.getInstance();
        c.setTime(date);
        int week = c.get(Calendar.DAY_OF_WEEK);
        if (week == 1)
        {
            str = "日";
        } else if (week == 2)
        {
            str = "一";
        } else if (week == 3)
        {
            str = "二";
        } else if (week == 4)
        {
            str = "三";
        } else if (week == 5)
        {
            str = "四";
        } else if (week == 6)
        {
            str = "五";
        } else if (week == 7)
        {
            str = "六";
        }
        return str;
    }

    public static int getWeekStr2(Date date)
    {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int week = c.get(Calendar.DAY_OF_WEEK) - 1;
        return week;
    }

    //设置单据保存天数 (  如果day为1 则只到 当天晚上的12点)
    public static int compareTimeZone(int day)
    {
        SimpleDateFormat sdf   = new SimpleDateFormat("yyyyMMdd");
        long             time  = 0;
        long             mTime = 0;
        Calendar         cal   = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_MONTH, day);
        String dTime = sdf.format(cal.getTime());
        try
        {
            mTime = sdf.parse(dTime).getTime() / 1000;
            time  = new Date().getTime() / 1000;
        } catch (ParseException e)
        {
            e.printStackTrace();
        }
        return (int) (mTime - time);
    }

    /**
     * 根据时间字符串 转换成指定格式的时间字符串
     *
     * @param time   要转换的时间字符串
     * @param format 当前时间字符串格式
     * @param format 目标字符串格式
     *
     * @return
     *
     * @return Date    返回类型
     *
     * @author: gaopp
     * @date: 2015-1-22 下午04:55:38
     */
    public static String strToStr(String time, String format, String format1)
    {
        try
        {
            SimpleDateFormat sdf  = new SimpleDateFormat(format);
            Date             date = sdf.parse(time);

            SimpleDateFormat sdf1 = new SimpleDateFormat(format1);
            return sdf1.format(date);
        } catch (Exception e)
        {
            return null;
        }
    }

    /**
     * 获取时间的下一秒的时间
     *
     * @param date
     *
     * @return
     */
    public static Date addOneSecond(Date date)
    {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.SECOND, 1);
        return calendar.getTime();
    }

    public static String getLastDay()
    {
        SimpleDateFormat df       = new SimpleDateFormat("yyyy-MM-dd");
        Calendar         calendar = Calendar.getInstance();//此时打印它获取的是系统当前时间
        calendar.add(Calendar.DATE, -1); //
        Date   theDate = calendar.getTime();
        String s       = df.format(theDate);
        return s;
    }

    /**
     * 获得指定日期的前一天
     *
     * @param specifiedDay
     *
     * @return
     *
     * @throws Exception
     */
    public static String getSpecifiedDayBefore(String specifiedDay)
    {
        //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c    = Calendar.getInstance();
        Date     date = null;
        try
        {
            date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
        } catch (ParseException e)
        {
            e.printStackTrace();
        }
        c.setTime(date);
        int day = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day - 1);

        String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
        return dayBefore;
    }

    /**
     * 获得指定日期的后一天
     *
     * @param specifiedDay
     *
     * @return
     */
    public static Date getSpecifiedDayAfter(String specifiedDay)
    {
        Calendar c    = Calendar.getInstance();
        Date     date = null;
        try
        {
            date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
        } catch (ParseException e)
        {
            e.printStackTrace();
        }
        c.setTime(date);
        int day = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day + 1);

        String dayAfter = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
        return strToDate(dayAfter, "yyyy-MM-dd");
    }


    /**
     * <li>功能描述:时间相减得到天数
     *
     * @param beginDateStr
     * @param endDateStr
     *
     * @return long
     */
    public static long getDaySub(String beginDateStr, String endDateStr)
    {
        long                       day    = 0;
        java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
        java.util.Date             beginDate;
        java.util.Date             endDate;
        try
        {
            beginDate = format.parse(beginDateStr);
            endDate   = format.parse(endDateStr);
            day       = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
            //System.out.println("相隔的天数="+day);
        } catch (ParseException e)
        {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        }
        return day;
    }

    /**
     * 获取指定星期的日期
     *
     * @param week
     * @param day_of_week 周日 1 周一 2 周二 3周三 4  周四 5 周五 6 周六 7
     *
     * @return
     */
    public static String getWeekDate(int week, int day_of_week)
    {
        Calendar date = Calendar.getInstance(Locale.CHINA);
        date.setFirstDayOfWeek(Calendar.MONDAY);//将每周第一天设为星期一,默认是星期天
        date.add(Calendar.WEEK_OF_MONTH, -week);//周数减一,即上周
        date.set(Calendar.DAY_OF_WEEK, day_of_week);//日子设为星期
        return DateUtils.dateToStr(date.getTime(), "yyyy-MM-dd");
    }

    /**
     * 判断个时间是否在前2个时间段内
     *
     * @param begintime 开始时间
     * @param endtime   结束时间
     * @param currtime  需要判断的时间
     *
     * @return
     *
     * @return boolean    返回类型
     *
     * @Title: isTimeInBtTime
     * @Description: (这里用一句话描述这个方法的作用)
     * @author yangjie.wang
     * @date 2016年12月29日 下午2:21:43
     */
    public static boolean isTimeInBtTime(Date begintime, Date endtime, Date currtime)
    {
        String begintimeStr = DateUtils.dateToStr(begintime, "yyyy-MM-dd HH:mm:ss");
        begintimeStr = "1970-01-01" + begintimeStr.substring(begintimeStr.indexOf(" "), begintimeStr.length());
        begintime    = DateUtils.strToDate(begintimeStr, "yyyy-MM-dd HH:mm:ss");

        String endtimeStr = DateUtils.dateToStr(endtime, "yyyy-MM-dd HH:mm:ss");
        endtimeStr = "1970-01-01" + endtimeStr.substring(endtimeStr.indexOf(" "), endtimeStr.length());
        endtime    = DateUtils.strToDate(endtimeStr, "yyyy-MM-dd HH:mm:ss");

        String currTimeStr = DateUtils.dateToStr(currtime, "yyyy-MM-dd HH:mm:ss");
        currTimeStr = "1970-01-01" + currTimeStr.substring(currTimeStr.indexOf(" "), currTimeStr.length());
        currtime    = DateUtils.strToDate(currTimeStr, "yyyy-MM-dd HH:mm:ss");

        if (begintime.compareTo(endtime) > 0)
        {//如果开始时间大于结束时间
            if (!(currtime.compareTo(endtime) > 0 && currtime.compareTo(begintime) < 0))
            {
                return true;
            }
        } else
        {
            if (currtime.compareTo(begintime) > 0 && currtime.compareTo(endtime) < 0)
            {
                return true;
            }
        }

        return false;
    }

    /*****
     * 时间 增加、减少 n个分钟以后时间
     * @param date YYYY-mm-dd HH:mm:ss
     * @param minute >0  分钟
     * @param type  增加和减少标志  0 减少 1增加
     * **/
    public static Date adjustDateByMinutes(Date d, int minute, int type)
    {
        Calendar Cal = Calendar.getInstance();
        Cal.setTime(d);
        if (type == 0)
        {
            Cal.add(Calendar.MINUTE, -minute);
        } else
        {
            Cal.add(Calendar.MINUTE, minute);
        }
        return Cal.getTime();
    }

    /**
     * 将时间格式yyyy-MM-dd转为yyyyMMdd
     * @param date
     * @return
     */
    public static String dateToString(String date)
    {
        String str = "";
        try
        {
            Date format = new SimpleDateFormat("yyyy-MM-dd").parse(date);
            str = new SimpleDateFormat("yyyyMMdd").format(format);
            return str;
        }catch (Exception e)
        {
            return str;
        }
    }

    /**
     * 获取本周的第一天
     * @return String
     * **/
    public static String getWeekStart(){
        Calendar cal=Calendar.getInstance();
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.add(Calendar.WEEK_OF_MONTH, 0);
        cal.set(Calendar.DAY_OF_WEEK, 2);
        Date time=cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }
    /**
     * 获取本周的最后一天
     * @return String
     * **/
    public static String getWeekEnd(){
        Calendar cal=Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
        cal.add(Calendar.DAY_OF_WEEK, 1);
        Date time=cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time)+" 23:59:59";
    }

    /**
     * 获取当前月份 前12月的日期 拿到的日期 格式 yyyy-MM-00
     * @return
     */
    public static String getLastMouthDayForYear(){
        // 前 12个月日期
        String    month = "";
        LocalDate today = LocalDate.now();
        for (long i = 0L; i <= 11L; i++)
        {
            if(i == 11L){
                LocalDate localDate = today.minusMonths(i);
                 month = localDate.toString().substring(0, 7);
            }
        }
        return month+"-00";
    }
    /**
     * 获取当前月份 前12月的日期 拿到的日期 格式 yyyy-MM
     * @return
     */
    public static String getLastMouthDayForYeardd(){
        // 前 12个月日期
        String    month = "";
        LocalDate today = LocalDate.now();
        for (long i = 0L; i <= 11L; i++)
        {
            if(i == 11L){
                LocalDate localDate = today.minusMonths(i);
                month = localDate.toString().substring(0, 10);
            }
        }
        return month;
    }

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值