天天看点

时间格式相加减方法

package com.njwxb.swapp.common;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import com.njwxb.swapp.log.LogFactory;

import com.njwxb.swapp.log.Runlog;

public abstract class DateUtil

{

    private static Runlog runLog = LogFactory.getRunlog();

    private static String sdf14 = "yyyyMMddHHmmss";

    private static String sdf17 = "yyyyMMddHHmmssSSS";

    private static String sdfhuman = "yyyy-MM-dd HH:mm:ss";

    private static String sdfcn = "yyyy年MM月dd日 HH:mm";

    private static String sdfymd = "yyyy-MM-dd";

    private static String sdfcn8 = "yyyy年MM月dd日";

    public static String getCurrentTime14()

    {

        SimpleDateFormat sdf14Format = new SimpleDateFormat(sdf14);

        return sdf14Format.format(new Date());

    }

    public static String getCurrentTime17()

    {

        SimpleDateFormat sdf17Format = new SimpleDateFormat(sdf17);

        return sdf17Format.format(new Date());

    }

    public static String getCurrentTimeHuman()

    {

        SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

        return sdfhumanFormat.format(new Date());

    }

    public static String getCurrentCnTime()

    {

        SimpleDateFormat sdfcnFormat = new SimpleDateFormat(sdfcn);

        return sdfcnFormat.format(new Date());

    }

    public static String formateCurrentCnTime(Calendar calendar)

    {

        SimpleDateFormat sdfcnFormat = new SimpleDateFormat(sdfcn);

        return sdfcnFormat.format(calendar.getTime());

    }

    public static String formateTimeFromSdfhumanToSdfymd(String dateStr)

    {

        try

        {

            SimpleDateFormat sdfymdFormat = new SimpleDateFormat(sdfymd);

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            return sdfymdFormat.format(sdfhumanFormat.parse(dateStr));

        }

        catch (ParseException e)

        {

            return formateCurrentCnTime(Calendar.getInstance());

        }

    }

    public static String formateCurrentCnTime(String dateStr)

    {

        try

        {

            SimpleDateFormat sdfcnFormat = new SimpleDateFormat(sdfcn);

            return sdfcnFormat.format(sdfcnFormat.parse(dateStr));

        }

        catch (ParseException e)

        {

            return formateCurrentCnTime(Calendar.getInstance());

        }

    }

    public static String formateCurrentHumanTime(String dateStr)

    {

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            SimpleDateFormat sdfcnFormat = new SimpleDateFormat(sdfcn);

            return sdfcnFormat.format(sdfhumanFormat.parse(dateStr));

        }

        catch (ParseException e)

        {

            return formateCurrentCnTime(Calendar.getInstance());

        }

    }

    public static String getCurrentYearMonthDay()

    {

        SimpleDateFormat sdfymdFormat = new SimpleDateFormat(sdfymd);

        return sdfymdFormat.format(new Date());

    }

    public static String addsdfymdYear(String datestr, int step)

    {

        try

        {

            SimpleDateFormat sdfymdFormat = new SimpleDateFormat(sdfymd);

            Date date = sdfymdFormat.parse(datestr);

            Calendar calendar = Calendar.getInstance();

            calendar.setTime(date);

            calendar.add(Calendar.YEAR, step);

            return sdfymdFormat.format(calendar.getTime());

        }

        catch (ParseException e)

        {

            runLog.error("add day error!datestr=" + datestr + "step=" + step, e);

        }

        return null;

    }

    public static String addsdfymdDay(String datestr, int step)

    {

        try

        {

            SimpleDateFormat sdfymdFormat = new SimpleDateFormat(sdfymd);

            Date date = sdfymdFormat.parse(datestr);

            Calendar calendar = Calendar.getInstance();

            calendar.setTime(date);

            calendar.add(Calendar.DATE, step);

            return sdfymdFormat.format(calendar.getTime());

        }

        catch (ParseException e)

        {

            runLog.error("add day error!datestr=" + datestr + "step=" + step, e);

        }

        return null;

    }

    public static long getDaySub(String datestr1, String datestr2)

    {

        if (runLog.isDebugEnabled())

        {

            runLog.debug("inMethod getDaySub", "datestr1", datestr1, "datestr2", datestr2);

        }

        long day = 0;

        try

        {

            SimpleDateFormat sdfymdFormat = new SimpleDateFormat(sdfymd);

            Date beginDate = sdfymdFormat.parse(datestr2);

            Date endDate = sdfymdFormat.parse(datestr1);

            day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);

        }

        catch (ParseException e)

        {

            runLog.error("getDaySub error!datestr1=" + datestr1 + "datestr1" + datestr1, e);

        }

        if (runLog.isDebugEnabled())

        {

            runLog.debug("outMethod getDaySub", "day", day);

        }

        return day;

    }

    public static long getHumanMinSub(String datestr1, String datestr2)

    {

        long day = 0;

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            Date beginDate = sdfhumanFormat.parse(datestr2);

            Date endDate = sdfhumanFormat.parse(datestr1);

            day = (endDate.getTime() - beginDate.getTime()) / (60 * 1000);

        }

        catch (ParseException e)

        {

            runLog.error("getDaySub error!datestr1=" + datestr1 + "datestr1" + datestr1, e);

        }

        return day;

    }

    public static boolean compareToData(String data1, String data2)

    {

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            Date a = sdfhumanFormat.parse(data1);

            Date b = sdfhumanFormat.parse(data2);

            if (a.getTime() - b.getTime() > 0)

            {

                return true;

            }

        }

        catch (Exception e)

        {

            runLog.error("compare date error!data1=" + data1 + "data2=" + data2, e);

        }

        return false;

    }

    public static boolean compareToData2(String data1, String data2)

    {

        try

        {

            SimpleDateFormat sdfymdFormat = new SimpleDateFormat(sdfymd);

            Date a = sdfymdFormat.parse(data1);

            Date b = sdfymdFormat.parse(data2);

            if (a.getTime() - b.getTime() >= 0)

            {

                return true;

            }

        }

        catch (Exception e)

        {

            runLog.error("compare date error!data1=" + data1 + "data2=" + data2, e);

        }

        return false;

    }

    public static String getSystemCurrData()

    {

        Date date = new Date();

        SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

        return sdfhumanFormat.format(date);

    }

    public static String addDay(String datestr, int step)

    {

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            Date date = sdfhumanFormat.parse(datestr);

            Calendar calendar = Calendar.getInstance();

            calendar.setTime(date);

            calendar.add(Calendar.DATE, step);

            return sdfhumanFormat.format(calendar.getTime());

        }

        catch (ParseException e)

        {

            runLog.error("add day error!datestr=" + datestr + "step=" + step, e);

        }

        return null;

    }

    public static String addMonth(String datestr, int step)

    {

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            Date date = sdfhumanFormat.parse(datestr);

            Calendar calendar = Calendar.getInstance();

            calendar.setTime(date);

            calendar.add(Calendar.MONTH, step);

            return sdfhumanFormat.format(calendar.getTime());

        }

        catch (ParseException e)

        {

            runLog.error("add day error!datestr=" + datestr + "step=" + step, e);

        }

        return null;

    }

    public static boolean dateIsToday(String datestr)

    {

        try

        {

            Date curDate = new Date();

            SimpleDateFormat simpFormat = new SimpleDateFormat(sdfymd);

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            String curDateStr = simpFormat.format(curDate);

            Date date = sdfhumanFormat.parse(datestr);

            Date startDate = sdfhumanFormat.parse(curDateStr + " 00:00:00");

            Date endDate = sdfhumanFormat.parse(curDateStr + " 23:59:59");

            if (date.getTime() <= endDate.getTime() && date.getTime() >= startDate.getTime())

            {

                return true;

            }

        }

        catch (ParseException e)

        {

            runLog.error("parse datestr fail! datestr=" + datestr, e);

        }

        return false;

    }

    public static boolean isHumanFormat(String datestr)

    {

        boolean isHuman = false;

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            Date date = sdfhumanFormat.parse(datestr);

            String tmp = sdfhumanFormat.format(date);

            isHuman = datestr.equals(tmp);

        }

        catch (ParseException e)

        {

            runLog.error("add day error!datestr=", "isHuman", isHuman, e);

        }

        return isHuman;

    }

    public static String getYesterdayZero(int day)

    {

        try

        {

            Calendar calendar = Calendar.getInstance();

            calendar.setTime(new Date());

            calendar.add(Calendar.DATE, day);

            SimpleDateFormat simpFormat = new SimpleDateFormat(sdfcn8);

            String timeStr = simpFormat.format(calendar.getTime()) + "00:00";

            return timeStr;

        }

        catch (Exception e)

        {

            runLog.error("parse datestr fail!", e);

        }

        return null;

    }

    public static String getMondayOfDate(String datestr)

    {

        Date date = null;

        //周日到周一为0-6

        Integer week = null;

        //周一的日期

        String monday = null;

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            date = sdfhumanFormat.parse(datestr);

            Calendar cal = Calendar.getInstance();

            cal.setTime(date);

            week = cal.get(Calendar.DAY_OF_WEEK) - 1;

            if (week < 0)

            {

                week = 0;

            }

            if (week > 0)

            {

                monday = addDay(datestr, -(week - 1));

            }

            else

            {

                monday = addDay(datestr, -6);

            }

        }

        catch (Exception e)

        {

            runLog.error("parse datestr fail!", e);

        }

        return monday;

    }

    public static String getMonthFirstOrLastDay(String datestr, String flag)

    {

        Date date = null;

        String day = null;

        try

        {

            SimpleDateFormat sdfhumanFormat = new SimpleDateFormat(sdfhuman);

            date = sdfhumanFormat.parse(datestr);

            Calendar calendar = Calendar.getInstance();

            calendar.setTime(date);

            // 设置日期为本月最大日期

            if ("first".equals(flag))

            {

                calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));

            }

            else if ("last".equals(flag))

            {

                calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));

            }

            day = sdfhumanFormat.format(calendar.getTime());

        }

        catch (Exception e)

        {

            runLog.error("parse datestr fail!", e);

        }

        return day;

    }

    public static String getDayOfMonth(Integer year, Integer month, String flag)

    {

        Calendar cal = Calendar.getInstance();

        //设置年份

        if (year != null)

        {

            cal.set(Calendar.YEAR, year);

        }

        else

        {

            cal.set(Calendar.YEAR, cal.get(Calendar.YEAR));

        }

        //设置月份

        if (month != null)

        {

            cal.set(Calendar.MONTH, month - 1);

        }

        else

        {

            cal.set(Calendar.MONTH, cal.get(Calendar.MONTH));

        }

        //获取某月最大或最小天数天数

        if ("first".equals(flag))

        {

            cal.set(Calendar.DATE, cal.getActualMinimum(Calendar.DATE));

        }

        else if ("last".equals(flag))

        {

            cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));

        }

        //格式化日期

        SimpleDateFormat sdf = new SimpleDateFormat(sdfymd);

        String day = sdf.format(cal.getTime());

        return day;

    }

}

继续阅读