加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Web开发中常用的时间处理Java工具类

发布时间:2020-12-15 00:14:36 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import static java.util.Calendar.HOUR_OF_DAY;import static java.util.Calendar.MILLISECOND;import static java.util.Calendar.MINUTE;import sta

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

import static java.util.Calendar.HOUR_OF_DAY;
import static java.util.Calendar.MILLISECOND;
import static java.util.Calendar.MINUTE;
import static java.util.Calendar.SECOND;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
* Copyright (c) 2011 sxgkwei
* Author:sxgkwei
* Email:[email?protected]
* Date: 2012-03-30 13:01:21
* JDK: 1.6.2
*/
public class DateUtil extends org.apache.commons.lang.time.DateUtils {

    /**
     * 默认的日期格式化样式
     */
    public static final String DAY_PATTERN = "yyyy-MM-dd";
    /**
     * 默认的时间格式化样式
     */
    public static final String TIME_PATTERN = "HH:mm:ss";

    /**
     * 将Date格式化成符合默认格式的字符串
     * 
     * @param date
     * @return 返回样例:2012-03-29 14:32:23
     */
    public static String format(Date date) {
        SimpleDateFormat formatTool = new SimpleDateFormat();
        formatTool.applyPattern(DAY_PATTERN + " " + TIME_PATTERN);
        return formatTool.format(date);
    }

    /**
     * 将Date格式化成符合默认日期格式的字符串
     * 
     * @param date
     * @return 返回样例:2012-03-29
     */
    public static String formatDate(Date date) {
        SimpleDateFormat formatTool = new SimpleDateFormat();
        formatTool.applyPattern(DAY_PATTERN);
        return formatTool.format(date);
    }

    /**
     * 将Date格式化成符合默认时间格式的字符串
     * 
     * @param date
     * @return 返回样例:14:32:23
     */
    public static String formatTime(Date date) {
        SimpleDateFormat formatTool = new SimpleDateFormat();
        formatTool.applyPattern(TIME_PATTERN);
        return formatTool.format(date);
    }

    /**
     * 按照pattern格式格式化Date
     * 
     * @param date
     * @param pattern
     *            样例: yyyy/MM/dd
     * @return 返回样例:2012/03/29
     */
    public static String format(Date date,String pattern) {
        SimpleDateFormat formatTool = new SimpleDateFormat();
        formatTool.applyPattern(pattern);
        return formatTool.format(date);
    }

    /**
     * 将符合默认格式的字符串转换成Date
     * 
     * @param dateValue
     *            样例:2012-03-29 14:32:23
     * @return
     * @throws ParseException
     */
    public static Date parse(String dateValue) throws ParseException {
        SimpleDateFormat formatTool = new SimpleDateFormat();
        formatTool.applyPattern(DAY_PATTERN + " " + TIME_PATTERN);
        return formatTool.parse(dateValue);
    }

    /**
     * 将符合默认格式的日期字符串转换成Date
     * 
     * @param dateValue
     *            样例:2012-03-29
     * @return
     * @throws ParseException
     */
    public static Date parseDate(String dateValue) throws ParseException {
        SimpleDateFormat formatTool = new SimpleDateFormat();
        formatTool.applyPattern(DAY_PATTERN);
        return formatTool.parse(dateValue);
    }

    /**
     * 将符合pattern格式的dateValue转换成Date
     * 
     * @param dateValue
     *            样例:2012/03/29
     * @param pattern
     *            样例:yyyy/MM/dd
     * @return
     * @throws ParseException
     */
    public static Date parse(String dateValue,String pattern)
            throws ParseException {
        SimpleDateFormat formatTool = new SimpleDateFormat();
        formatTool.applyPattern(pattern);
        return formatTool.parse(dateValue);
    }

    /**
     * 返回这一天的最早的时候
     * 
     * @param date
     * @return
     */
    public static Date getEarliest(Date date) {
        return parseTime(date,0);
    }

    /**
     * 返回这一天的最晚时候
     * 
     * @param date
     * @return
     */
    public static Date getLastest(Date date) {
        return parseTime(date,23,59,999);
    }

    /**
     * 得到指定月的天数
     * 
     * @param year
     * @param month
     * @return
     */
    public static int getMonthLastDay(int year,int month) {
        Calendar a = Calendar.getInstance();
        a.set(Calendar.YEAR,year);
        a.set(Calendar.MONTH,month - 1);
        a.set(Calendar.DATE,1);// 把日期设置为当月第一天
        a.roll(Calendar.DATE,-1);// 日期回滚一天,也就是最后一天
        int maxDate = a.get(Calendar.DATE);
        return maxDate;
    }

    /**
     * 返回指定时间加上num天后的时间
     * 
     * @param date
     * @param num
     * @return
     */
    public static Date add(Date date,int num) {
        Calendar a = Calendar.getInstance();
        a.setTime(date);
        a.add(Calendar.DAY_OF_MONTH,num);
        return a.getTime();
    }

    /**
     * 返回false:date=null,date是1970年;其它都返回true
     * 
     * @param date
     * @return
     */
    public static boolean isNotEmpty(Date date) {
        if (date != null) {
            Calendar a = Calendar.getInstance();
            a.setTime(date);
            return a.get(Calendar.YEAR) != 1970;
        }
        return Boolean.FALSE;
    }

    /**
     * 获得date的小时数0-23
     * 
     * @param date
     * @return
     */
    public static int getHours(Date date) {
        Calendar a = Calendar.getInstance();
        a.setTime(date);
        return a.get(Calendar.HOUR_OF_DAY);
    }

    /**
     * 获得date是一周的第几天,注意:周日 返回 1,周六 返回 7
     * 
     * @param date
     * @return
     */
    public static int getDay(Date date) {
        Calendar a = Calendar.getInstance();
        a.setTime(date);
        return a.get(Calendar.DAY_OF_WEEK);
    }

    /**
     * 设定date的时间细节
     * 
     * @param date
     *            要设定时间细节的date
     * @param hourOfDay
     *            0-23
     * @param minute
     *            0-59
     * @param second
     *            0-59
     * @param milliSecond
     *            0-999
     * @return
     */
    public static Date parseTime(Date date,int hourOfDay,int minute,int second,int milliSecond) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        setCalendarTime(cal,hourOfDay,minute,second,milliSecond);
        return cal.getTime();
    }

    /**
     * 设定date的时间细节
     * 
     * @param date
     *            要设定时间细节的date
     * @param timeDetail
     *            以:号分隔的24小时制的时间,例:16:23:42:267 或 16(等同于16:00:00:000)
     * @return
     */
    public static Date parseTime(Date date,String timeDetail) {

        List<String> strList = new ArrayList<String>();
        strList.addAll(Arrays.asList(timeDetail.split(":")));

        while (strList.size() < 4) {
            strList.add("0");
        }
        return parseTime(date,Integer.parseInt(strList.get(0)),Integer.parseInt(strList.get(1)),Integer.parseInt(strList.get(2)),Integer.parseInt(strList.get(3)));
    }

    /**
     * 指定时间 是否在 当前时间 之后,注:和日期无关
     * 
     * @param time
     *            指定的时间, 传入样例:16:23:42:267 或 16(等同于16:00:00:000)
     * @return
     */
    public static boolean isAfterTime(String time) {
        Date date = parseTime(new Date(),time);
        return date.after(new Date());
    }

    /**
     * 指定时间 是否在 当前时间 之前,注:和日期无关
     * 
     * @param time
     *            指定的时间, 传入样例:16:23:42:267 或 16(等同于16:00:00:000)
     * @return
     */
    public static boolean isBeforeTime(String time) {
        Date date = parseTime(new Date(),time);
        return date.before(new Date());
    }

    private static void setCalendarTime(Calendar cal,int milliSecond) {
        cal.set(HOUR_OF_DAY,hourOfDay);
        cal.set(MINUTE,minute);
        cal.set(SECOND,second);
        cal.set(MILLISECOND,milliSecond);
    }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读