Java 时间处理总结, 以及时间工具类的封装

本贴最后更新于 1498 天前,其中的信息可能已经事过境迁

前景

作为一名刚学 java 不久的小菜鸟,在写项目的过程中,对时间的处理很不熟练,于是在做完项目之后,决定自己封装一个关于时间的工具类,今后在开发过程中就可以拿来就用! 我将挨个记录,并在文章的最后贴上这个类的完整代码!

获取 yyyyMMddHHmmss 格式的时间
public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
private final static SimpleDateFormat sdfTimes = new SimpleDateFormat(YYYYMMDDHHMMSS);
/**
     * 获取yyyyMMddHHmmss格式
     *
     * @return
     */
    public static String getSdfTimes() {
        return sdfTimes.format(new Date());
    }
获取 YYYY 格式的时间
public static final String YYYY = "yyyy";
private final static SimpleDateFormat sdfYear = new SimpleDateFormat(YYYY);
/**
     * 获取YYYY格式(年)
     *
     * @return
     */
    public static String getYear() {
        return sdfYear.format(new Date());
    }
获取 MM 格式的时间(月)
public static final String MM = "MM";
private final static SimpleDateFormat sdfMM = new SimpleDateFormat(MM);
/**
     * 获取MM格式
     *
     * @return
     */
    public static String getMM() {
        return sdfMM.format(new Date());
    }
获取 dd 格式的时间(日)
public static final String DD = "dd";
private final static SimpleDateFormat sdfDd = new SimpleDateFormat(DD);
/**
     * 获取dd格式
     *
     * @return
     */
    public static String getDd() {
        return sdfDd.format(new Date());
    }
获取 yyyy-MM-dd 格式的时间
public static final String YYYY_MM_DD = "yyyy-MM-dd";
private final static SimpleDateFormat sdfDay = new SimpleDateFormat(YYYY_MM_DD);
/**
     * 获取yyyy-MM-dd格式
     *
     * @return
     */
    public static String getDay() {
        return sdfDay.format(new Date());
    }
获取 yyyyMMdd 格式的时间
public static final String YYYYMMdd = "yyyyMMdd";
private final static SimpleDateFormat sdfDays = new SimpleDateFormat(YYYYMMdd);
/**
     * 获取yyyyMMdd格式
     *
     * @return
     */
    public static String getDays() {
        return sdfDays.format(new Date());
    }
获取 YYYY-MM-DD HH:mm:ss 格式的时间
public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private final static SimpleDateFormat sdfTime = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
/**
     * 获取YYYY-MM-DD HH:mm:ss格式
     *
     * @return
     */
    public static String getTime() {
        return sdfTime.format(new Date());
    }
日期比较 ,如果 s > = e 返回 true 否则返回 false
public static boolean compareDate(String s, String e) {
        if (fomatDate(s) == null || fomatDate(e) == null) {
            return false;
        }
        return fomatDate(s).getTime() >= fomatDate(e).getTime();
    }
String 类型格式化成 yyyy-MM-dd 的 Date 类型
public static Date fomatDate(String date) {
        DateFormat fmt = new SimpleDateFormat(YYYY_MM_DD);
        try {
            return fmt.parse(date);
        } catch (ParseException e) {
            e.printStackpublic static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";Trace();
            return null;
        }
    }
String 类型格式化成 yyyy-MM-dd HH:mm:ss 的 Date 类型
public static Date fomatDateToYyyyMMddHHmmss(String date) {
        DateFormat fmt = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
        try {
            return fmt.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
校验日期是否合法
public static boolean isValidDate(String s) {
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        try {
            fmt.parse(s);
            return true;
        } catch (Exception e) {
            return false; // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
        }
    }
时间相减得到天数
public static long getDaySub(String beginDateStr, String endDateStr) {
        long day = 0;
        SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD);
        Date beginDate = null;
        Date endDate = null;
        try {
            beginDate = format.parse(beginDateStr);
            endDate = format.parse(endDateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
        //System.out.println("相隔的天数="+day);
        return day;
    }
得到 n 天之后的日期
public static String getAfterDayDate(String days) {
        int daysInt = Integer.parseInt(days);
        Calendar canlendar = Calendar.getInstance(); // java.util包
        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
        Date date = canlendar.getTime();
        SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdfd.format(date);
        return dateStr;
    }
得到 n 天之后是周几
public static String getAfterDayWeek(String days) {
        int daysInt = Integer.parseInt(days);
        Calendar canlendar = Calendar.getInstance(); // java.util包
        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
        Date date = canlendar.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("E");
        String dateStr = sdf.format(date);
        return dateStr;
    }
按照 yyyy-MM-dd HH:mm:ss 的格式,日期转字符串
public static String date2Str(Date date) {
        return date2Str(date, "yyyy-MM-dd HH:mm:ss");
    }
按照 yyyy-MM-dd HH:mm:ss 的格式,字符串转日期
public static Date str2Date(String date) {
        if (Tools.notEmpty(date)) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            try {
                return sdf.parse(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return new Date();
        } else {
            return null;
        }
    }
按照 yyyy-MM-dd 的格式,字符串转日期
public static Date strToDate(String date) {
        if (Tools.notEmpty(date)) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                return sdf.parse(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return new Date();
        } else {
            return null;
        }
    }
把时间根据时、分、秒转换为时间段
public static String getTimes(String StrDate) {
        String resultTimes = "";
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now;
        try {
            now = new Date();
            Date date = df.parse(StrDate);
            long times = now.getTime() - date.getTime();
            long day = times / (24 * 60 * 60 * 1000);
            long hour = (times / (60 * 60 * 1000) - day * 24);
            long min = ((times / (60 * 1000)) - day * 24 * 60 - hour * 60);
            long sec = (times / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);

            StringBuffer sb = new StringBuffer();
            //sb.append("发表于:");
            if (hour > 0) {
                sb.append(hour + "小时前");
            } else if (min > 0) {
                sb.append(min + "分钟前");
            } else {
                sb.append(sec + "秒前");
            }
            resultTimes = sb.toString();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return resultTimes;
    }
按照参数 format 的格式,日期转字符串
public static String date2Str(Date date, String format) {
        if (date != null) {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(date);
        } else {
            return "";
        }
    }

好了,现在贴上这个工具类的整个代码:


                
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • zkun6813

    out 了 对于你这些封装,其实用 LocalDateTime 就好,关于时间各种处理都有了