日期工具类

package com.lyt.base.util;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;

import com.lyt.base.util.DateModel;

public class DateUtil {

    public static String datePattern = "MM/dd/yyyy";
    public static String timePattern = "HH:mm";

    public static String datePatternCommon = "yyyy-MM-dd";

    public static String datePatternAll = "yyyy-MM-dd HH:mm";
    /******* yyyy-MM-dd HH:mm:sss *********/
    public static String datePatternWithSecond = "yyyy-MM-dd HH:mm:ss";
    /******* yyyyMMddHHmmss *********/
    public static String datePatternWithSecond1 = "yyyyMMddHHmmss";

    public static String hourPattern = "HH";

    public static String minutePattern = "mm";

    /**
     * 获取当前日期时间(格式化到秒)
     * 
     * @return
     */
    public static String getDateTime() {
        String datestr = "";
        SimpleDateFormat df = new SimpleDateFormat(datePatternWithSecond);
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 格式化时间(时分秒)
     * 
     * @return
     */
    public static String getTime() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat("HH:mm:ss");
        java.util.Date date = new java.util.Date();

        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取当前年份
     * 
     * @return
     */
    public static String getYear() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat("yyyy");
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取当前月份
     * 
     * @return
     */
    public static String getMonth() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat("MM");
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取在当前月中的天数
     * 
     * @return
     */
    public static String getDay() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat("dd");
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取当前小时数
     * 
     * @return
     */
    public static String getHour() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat("HH");
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取当前分钟数
     * 
     * @return
     */
    public static String getMinute() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat("mm");
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取当前日期
     * 
     * @return
     */
    public static String getDate() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat(datePatternCommon);
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取当前日期精确到分钟
     * 
     * @return
     */
    public static String getDateShortTime() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat(datePatternAll);
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;
    }

    /**
     * 获取当前时间精确到秒
     * 
     * @return
     */
    public static String getDateTimeName() {
        String datestr = "";
        DateFormat df = new SimpleDateFormat(datePatternWithSecond);
        java.util.Date date = new java.util.Date();
        datestr = df.format(date);
        return datestr;

    }

    public static Date formatDateByString(String strDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = sdf.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    public static Date formatDateByString4(String strDate) {
        SimpleDateFormat sdf = new SimpleDateFormat(datePatternAll);
        Date date = null;
        try {
            date = sdf.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    public static Date formatDateByString2(String strDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    public static Date formatDateByString(String strDate, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date = null;
        try {
            date = sdf.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    public static Date formatDateByString1(String strDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = sdf.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

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

    public static String formatStringByDate2(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String strDate = sdf.format(date);
        return strDate;
    }

    public static String formatStringByDate(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String strDate = sdf.format(date);
        return strDate;
    }

    public static String formatStringByString(String date) {
        String newDate = "";
        Date d = formatDateByString(date);
        newDate = formatStringByDate(d, "yyyyMMddHHmm");
        return newDate;
    }

    public static String formatStringByString(String date, String pattern) {
        String newDate = "";
        Date d = formatDateByString(date);
        newDate = formatStringByDate(d, pattern);
        return newDate;
    }

    public static long getDateLong(String date) {
        Date d = formatDateByString(date, "yyyy-MM-dd HH:mm:ss");
        return d.getTime();
    }

    public static String getStringByLong(long date) {
        Date d = new Date(date);
        String sDate = formatStringByDate(d, "yyyy-MM-dd HH:mm:ss");
        return sDate;
    }

    public static Date getDateByDate(Date date) {
        String sDate = formatStringByDate(date, "yyyy-MM-dd HH:mm:ss");
        Date sf = formatDateByString(sDate);
        return sf;
    }

    public static String getDayweek(Date date) {
        String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int dayinweek = cal.get(Calendar.DAY_OF_WEEK) - 1;
        return weeks[dayinweek];
    }

    public static Date getWeekStart(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int day = cal.get(Calendar.DAY_OF_WEEK) - 1;
        cal.add(Calendar.DATE, -day + 1);
        return cal.getTime();
    }

    public static Date getWeekEnd(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int day = cal.get(Calendar.DAY_OF_WEEK) - 1;
        cal.add(Calendar.DATE, 6 - day + 1);
        return cal.getTime();
    }

    /**
     * 将指定的日期字符串按照指定的样式格式化成相应的日期型数据
     * 
     * @param strDate
     *            日期字符串
     * @param strPattern
     *            格式化样式
     * @return 日期型数据实例或null[格式化错误]
     */
    public static boolean validate(String strDate, String strPattern) throws Exception {

        if (strDate == null || "".equals(strDate)) {
            // throw new Exception("日期字符串为空:");
            return false;
        }

        if (strPattern == null || "".equals(strPattern)) {
            // throw new Exception("日期字符串的格式为空");
            return false;
        }

        if (datePatternCommon.equals(strPattern)) {
            if (!strDate.matches("^\\d{4}\\-\\d{2}\\-\\d{2}$")) {
                // throw new Exception("日期字符串的格式与样式不符");
                return false;
            }
        } else if (datePatternAll.equals(strPattern)) {
            if (!strDate.matches("^\\d{4}\\-\\d{2}\\-\\d{2}\\s\\d{2}\\:\\d{2}$")) {
                // throw new Exception("日期字符串的格式与样式不符");
                return false;
            }
        }

        SimpleDateFormat format = new SimpleDateFormat(strPattern);
        format.setLenient(false);
        try {
            if (format.parse(strDate) != null)
                return true;
            else
                return false;
        } catch (ParseException e) {
            // throw new Exception("日期字符串格式化失败");
            return false;
        }
    }

    /**
     * 将String转换成TimeStamp
     * 
     * @param datetime
     * @return
     */
    public static Timestamp getStringToTimestamp(String datetime) {
        Timestamp ts = new Timestamp(System.currentTimeMillis());
        try {
            ts = Timestamp.valueOf(datetime);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return ts;
    }

    public static Timestamp formatStringDate(String date) {
        String[] str = date.split(",");
        StringBuffer str1 = new StringBuffer();
        for (int i = 0; i < str.length; i++) {
            if (str[i].length() == 1) {
                str[i] = "0" + str[i];
            }
            str1.append(str[i] + "-");
        }
        String str2 = str1.substring(0, str1.length() - 1);
        str2 = str2 + " 00:00:00";
        return Timestamp.valueOf(str2.toString());
    }

    public static Timestamp getTimeStampTime() {
        Date date = new Date();
        Timestamp nousedate = new Timestamp(date.getTime());
        return nousedate;
    }

    public static String getTimeStampTimeToString(Timestamp tamp) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String date = sdf.format(tamp);
        return date;
    }

    /**
     * 生成的时间加上10天为期限
     * 
     * @param time
     * @return
     */
    @SuppressWarnings("deprecation")
    public static DateModel toYearAndMonthAndDay(Timestamp time, int day) {
        DateModel model = new DateModel();
        if (time.getDay() + 9 >= 20) {
            if (time.getMonth() == 12) {
                model.setYear(time.getYear() + 1 + 1900 + 1);
                model.setMonth(0);
                model.setDay(time.getDay() + 9 + day - 30);
            } else {
                model.setYear(time.getYear() + 1900);
                model.setMonth(time.getMonth() + 1);
                model.setDay(time.getDay() + 9 + day - 30);
            }
        } else {
            model.setYear(time.getYear() + 1900);
            model.setMonth(time.getMonth() + 1 - 1);
            model.setDay(time.getDay() + 9 + day);
        }

        return model;
    }

    public static final int SECONDS_IN_DAY = 60 * 60 * 24;
    public static final long MILLIS_IN_DAY = 1000L * SECONDS_IN_DAY;

    public static boolean isSameDayOfMillis(final long ms1, final long ms2) {
        final long interval = ms1 - ms2;
        return interval < MILLIS_IN_DAY
                && interval > -1L * MILLIS_IN_DAY
                && toDay(ms1) == toDay(ms2);
    }
    private static long toDay(long millis) {
        return (millis + TimeZone.getDefault().getOffset(millis)) / MILLIS_IN_DAY;
    }

    /** 
    * @Title: daysBetweenTwo 
    * @Description: 获取两个时间戳间间隔的天数 
    * @param @param time1
    * @param @param time2
    * @param @return    设定文件 
    * @return Integer    返回类型 
    * @throws 
    */
    public static Integer daysBetweenTwo(Long time1,Long time2){
        Long baseTime = Math.abs(time1 - time2);
        Long days = baseTime/(1000*3600*24);
        return Integer.parseInt(String.valueOf(days));

    }

    public static Calendar getCalendar(String date){
        Calendar dayc1 = new GregorianCalendar();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date daystart = null;
        try {
            daystart = df.parse(date);
            dayc1.setTime(daystart); 
        } catch (ParseException e) {
            e.printStackTrace();
       }
        return dayc1;
    }

    public static Calendar getCalendarByDate(Date date){
        String dateNew = formatStringByDate2(date);
        return getCalendar(dateNew);

    }   

    /** 
    * @Title: isInDate 
    * @Description: 判断一个时间段(YYYY-MM-DD)是否在一个区间 
    * @param @param date
    * @param @param strDateBegin
    * @param @param strDateEnd
    * @param @return    设定文件 
    * @return boolean    返回类型 
    * @throws 
    */
    public static boolean isInDate(Date date, String strDateBegin,String strDateEnd) {  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);  
        String strDate = sdf.format(date);   //2017-04-11
        // 截取当前时间年月日 转成整型
        int  tempDate=Integer.parseInt(strDate.split("-")[0]+strDate.split("-")[1]+strDate.split("-")[2]);  
        // 截取开始时间年月日 转成整型
        int  tempDateBegin=Integer.parseInt(strDateBegin.split("-")[0]+strDateBegin.split("-")[1]+strDateBegin.split("-")[2]);  
        // 截取结束时间年月日   转成整型
        int  tempDateEnd=Integer.parseInt(strDateEnd.split("-")[0]+strDateEnd.split("-")[1]+strDateEnd.split("-")[2]);

        if ((tempDate >= tempDateBegin && tempDate <= tempDateEnd)) {  
        return true;  
        } else {  
        return false;  
        }  
    }

    /**
     * 判断一个时间是否属于今天
     * @param date
     * @return
     */
    public static boolean isToday(Date date){
        SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");
        if(fmt.format(date).toString().equals(fmt.format(new Date()).toString())){//格式化为相同格式
             return true;
         }else {
             return false;
         }
    }


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值