为Java的Date而烦恼?真正的工具类的姿势。

本文详细介绍了一套全面的Java日期时间操作工具类,包括日期解析、格式化、比较、加减、获取特定部分等核心功能,适用于各种复杂的日期时间处理场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这回真不花里胡哨

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

/**
 * 功能描述:
 *
 * @author syt
 */
public class DateUtil {

    public static Date date = null;

    public static DateFormat dateFormat = null;

    public static Calendar calendar = null;

    /**
     * 判断当前时间是否与传入时间为同一天
     */
    public static boolean compareTime(String lastTime) {
        String nowTime = getMD();
        return nowTime.equals(lastTime);
    }

    /**
     * 比较两个日期的差
     *
     * @param a
     * @param b
     * @return
     */
    public static boolean compareDate(Date a, Date b) {
        long interval = (b.getTime() - a.getTime()) / 1000;
        if (interval >= 1) {//超过1s超时
            return true;
        } else {
            return false;
        }
    }

    /**
     * 采集经纬度日期
     *
     * @return
     */
    public static boolean isLocationDate() {
        int day = DateUtil.getDay(new Date());
        return day == 1 || day == 2 || day == 3;
    }

    /**
     * 功能描述:格式化日期
     *
     * @param dateStr String 字符型日期
     * @param format  String 格式
     * @return Date 日期
     */
    public static Date parseDate(String dateStr, String format) {
        try {
            dateFormat = new SimpleDateFormat(format);
            String dt = dateStr.replaceAll("-", "/");
            if ((!dt.equals("")) && (dt.length() < format.length())) {
                dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]", "0");
            }
            date = (Date) dateFormat.parse(dt);
        } catch (Exception e) {
        }
        return date;
    }

    /**
     * 00:00~08:00计为前一天的日期
     * 08:00~24:00计为当天的日期
     *
     * @return String "yyyyMMdd"格式的日期
     */
    public static String getYYYYMMDD() {
        String yyMMDD = "";
        String monS = "";
        String dayS = "";
        String hourS = "";
        Calendar ca = Calendar.getInstance();
        ca.add(Calendar.DATE, -1);//天数日期-1(前一天)
        int year = ca.get(Calendar.YEAR);
        int month = ca.get(Calendar.MONTH) + 1;
        int day = ca.get(Calendar.DATE);
        int hour_of_day = ca.get(Calendar.HOUR_OF_DAY);//HOUR_OF_DAY 24小时制

        if (month < 10) {
            monS = "0" + month;
        } else {
            monS = month + "";
        }
        if (day < 10) {
            dayS = "0" + day;
        } else {
            dayS = day + "";
        }
        if (hour_of_day < 8) {//08:00之前的计为前一天
            yyMMDD = year + monS + dayS;
        } else {
            yyMMDD = new SimpleDateFormat("yyyyMMdd").format(new Date());
        }
        return yyMMDD;
    }

    /**
     * 功能描述:格式化日期
     *
     * @param dateStr String 字符型日期:YYYY-MM-DD 格式
     * @return Date
     */
    public static Date parseDate(String dateStr) {
        return parseDate(dateStr, "yyyy/MM/dd");
    }

    // /**
    // * 功能描述:格式化日期
    // *
    // * @param dateStr
    // * String 字符型日期:YYYY-MM-DD 格式
    // * @return Date
    // */
    // public static Date parsesDateTime(String dateStr){
    // return parseDate(dateStr, "yyyy-MM-dd");
    // }

    /**
     * 功能描述:格式化输出日期
     *
     * @param date   Date 日期
     * @param format String 格式
     * @return 返回字符型日期
     */
    public static String format(Date date, String format) {
        String result = "";
        try {
            if (date != null) {
                dateFormat = new SimpleDateFormat(format);
                result = dateFormat.format(date);
            }
        } catch (Exception e) {
        }
        return result;
    }

    /**
     * 功能描述:
     *
     * @param date Date 日期
     */
    public static String format(Date date) {
        return format(date, "yyyy/MM/dd");
    }

    /**
     * 功能描述:返回年份
     *
     * @param date Date 日期
     * @return 返回年份
     */
    public static int getYear(Date date) {
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.YEAR);
    }

    /**
     * 功能描述:返回月份
     *
     * @param date Date 日期
     * @return 返回月份
     */
    public static int getMonth(Date date) {
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.MONTH) + 1;
    }

    /**
     * 功能描述:返回日份
     *
     * @param date Date 日期
     * @return 返回日份
     */
    public static int getDay(Date date) {
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取当前的年月日
     */
    public static String getYMD() {
        Date now = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return dateFormat.format(now);
        // calendar = Calendar.getInstance();
        // return calendar.get(Calendar.YEAR) + "-"
        // + (calendar.get(Calendar.MONTH) + 1) + "-"
        // + calendar.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 是否需要弹框条件
     * @return
     */
    public static Boolean isNeedDialogForJBH(){
        String ymd = getYMD();
        if ("2018-10-29".equals(ymd)||"2018-10-30".equals(ymd)||"2018-10-31".equals(ymd)||"2018-11-01".equals(ymd)||"2018-11-02".equals(ymd)||"2018-11-03".equals(ymd)||"2018-11-04".equals(ymd)||"2018-11-05".equals(ymd)||"2018-11-06".equals(ymd)||"2018-11-07".equals(ymd)||"2018-11-08".equals(ymd)||"2018-11-09".equals(ymd)){
            return true;
        }
        return false;
    }

    /**
     * 获取当前的月日
     */
    public static String getMD() {
        Date now = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("MMdd");
        return dateFormat.format(now);
    }

    /**
     * 比较两个日期的大小,日期格式为yyyy-MM-dd
     *
     * @param str1 the first date
     * @param str2 the second date
     * @return true <br/>false
     */
    public static boolean isDateOneBigger(String str1, String str2) {
        boolean isBigger = false;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dt1 = null;
        Date dt2 = null;
        try {
            dt1 = sdf.parse(str1);
            dt2 = sdf.parse(str2);

            if (dt1.getTime() >= dt2.getTime()) {
                isBigger = true;
            } else if (dt1.getTime() < dt2.getTime()) {
                isBigger = false;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return isBigger;
    }

    /**
     * 功能描述:返回小时
     *
     * @param date 日期
     * @return 返回小时
     */
    public static int getHour(Date date) {
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.HOUR_OF_DAY);
    }

    /**
     * 功能描述:返回分钟
     *
     * @param date 日期
     * @return 返回分钟
     */
    public static int getMinute(Date date) {
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.MINUTE);
    }

    /**
     * 返回秒钟
     *
     * @param date Date 日期
     * @return 返回秒钟
     */
    public static int getSecond(Date date) {
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.SECOND);
    }

    /**
     * 功能描述:返回毫秒
     *
     * @param date 日期
     * @return 返回毫秒
     */
    public static long getMillis(Date date) {
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.getTimeInMillis();
    }

    /**
     * 功能描述:返回字符型日期
     *
     * @param date 日期
     * @return 返回字符型日期 yyyy-MM-dd 格式
     */
    public static String getDate(Date date) {
        return format(date, "yyy-MM-dd");
    }

    /**
     * 功能描述:返回字符型时间
     *
     * @param date Date 日期
     * @return 返回字符型时间 HH:mm:ss 格式
     */
    public static String getTime(Date date) {
        return format(date, "HH:mm:ss");
    }

    /**
     * 功能描述:返回字符型日期时间
     *
     * @param date Date 日期
     * @return 返回字符型日期时间 yyyy/MM/dd HH:mm:ss 格式
     */
    public static String getDateTime(Date date) {
        return format(date, "yyyy-MM-dd HH:mm:ss");
    }

    public static String getFullTime(Date date) {
        String week = getWeekOfDate(date);
        String time = format(date, "yyyy-MM-dd HH:mm:ss");
        return time + " " + week;
    }

    /**
     * 获取对应的星期
     *
     * @param date
     * @return
     */
    public static String getWeekOfDate(Date date) {
        String[] weekOfDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        Calendar calendar = Calendar.getInstance();
        if (date != null) {
            calendar.setTime(date);
        }
        int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0) {
            w = 0;
        }
        return weekOfDays[w];

    }

    /**
     * 功能描述:日期相加
     *
     * @param date Date 日期
     * @param day  int 天数
     * @return 返回相加后的日期
     */
    public static Date addDate(Date date, int day) {
        calendar = Calendar.getInstance();
        long millis = getMillis(date) + ((long) day) * 24 * 3600 * 1000;
        calendar.setTimeInMillis(millis);
        return calendar.getTime();
    }

    /**
     * 功能描述:日期相减
     *
     * @param date Date 日期
     * @return 返回相减后的日期
     */
    public static Date diffDate(Date date, int day) {
        calendar = Calendar.getInstance();
        long millis = getMillis(date) - ((long) day) * 24 * 3600 * 1000;
        calendar.setTimeInMillis(millis);
        return calendar.getTime();
    }

    /**
     * 功能描述:日期相减
     *
     * @param date   Date 日期
     * @param minute int  分钟
     * @return 返回相减后的日期
     */
    public static Date diffDateMinute(Date date, int minute) {
        calendar = Calendar.getInstance();
        long millis = getMillis(date) - ((long) minute) * 60 * 1000;
        calendar.setTimeInMillis(millis);
        return calendar.getTime();
    }

    /**
     * 功能描述:取得指定月份的第一天
     *
     * @param strdate String 字符型日期
     * @return String yyyy-MM-dd 格式
     */
    public static String getMonthBegin(String strdate) {
        date = parseDate(strdate);
        return format(date, "yyyy-MM") + "-01";
    }

    /**
     * 功能描述:取得指定月份的最后一天
     *
     * @param strdate String 字符型日期
     * @return String 日期字符串 yyyy-MM-dd格式
     */
    public static String getMonthEnd(String strdate) {
        date = parseDate(getMonthBegin(strdate));
        calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.DAY_OF_YEAR, -1);
        return formatDate(calendar.getTime());
    }

    /**
     * 功能描述:常用的格式化日期
     *
     * @param date Date 日期
     * @return String 日期字符串 yyyy-MM-dd格式
     */
    public static String formatDate(Date date) {
        return formatDateByFormat(date, "yyyy-MM-dd");
    }

    /**
     * 功能描述:以指定的格式来格式化日期
     *
     * @param date   Date 日期
     * @param format String 格式
     * @return String 日期字符串
     */
    public static String formatDateByFormat(Date date, String format) {
        String result = "";
        if (date != null) {
            try {
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                result = sdf.format(date);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }

    public static String getFormatNowTime() {
        Date date = new Date();

        return getDateTime(date);
    }

    /**
     * 通过和今日的天数差异获得date
     *
     * @return date
     */
    public static Date getDate(int count) {
        Calendar d = Calendar.getInstance();
        int year = d.get(Calendar.YEAR);
        int month = d.get(Calendar.MONTH);
        int day = d.get(Calendar.DAY_OF_MONTH);
        d.set(year, month, day + count);
        Date date = d.getTime();
        return date;
    }

    /**
     * 将日期格式化
     * 、
     */
    public static String getDate(String date) {
        if (date == null) return "";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        // 实例化模板对象
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHHmmss");        // 实例化模板对象
        Date d = null;
        try {
            d = sdf1.parse(date);   // 将给定的字符串中的日期提取出来
        } catch (Exception e) {            // 如果提供的字符串格式有错误,则进行异常处理
            e.printStackTrace();       // 打印异常信息
        }
        return sdf2.format(d);
    }

    public static long getLong(String sDt) {
        long lTime = 0;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//1399906892
            Date dt2 = sdf.parse(sDt);
            //继续转换得到秒数的long型
            lTime = dt2.getTime();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return lTime;
    }

    public static long getLong2(String sDt) {
        long lTime = 0;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");//1399906892
            Date dt2 = sdf.parse(sDt);
            //继续转换得到秒数的long型
            lTime = dt2.getTime();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return lTime;
    }

    /**
     * CST时间转标准时间
     *
     * @param cstTime cst格式时间
     * @return
     */
    public static String switchCSTTimeToStandard(String cstTime) {
        String dateStr = "Thu May 26 14:41:46 CST 2016";//CST格式时间
        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
        Date date = null;
        try {
            date = (Date) sdf.parse(cstTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        String formatStr = new SimpleDateFormat("yyyy-MM-dd").format(date);
        String formatStr2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
        return formatStr2;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值