• 时间处理的工具类



    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:sxgkwei@gmail.com
    * 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, 0, 0, 0);
    }

    /**
    * 返回这一天的最晚时候
    *
    * @param date
    * @return
    */
    public static Date getLastest(Date date) {
    return parseTime(date, 23, 59, 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 hourOfDay,
    int minute, int second, int milliSecond) {
    cal.set(HOUR_OF_DAY, hourOfDay);
    cal.set(MINUTE, minute);
    cal.set(SECOND, second);
    cal.set(MILLISECOND, milliSecond);
    }
    }

  • 相关阅读:
    codeforces 37 E. Trial for Chief【spfa】
    bzoj 1999: [Noip2007]Core树网的核【树的直径+单调队列】
    codehunter 「Adera 6」杯省选模拟赛 网络升级 【树形dp】
    codeforces GYM 100781A【树的直径】
    bzoj 2878: [Noi2012]迷失游乐园【树上期望dp+基环树】
    bzoj 1791: [Ioi2008]Island 岛屿【基环树+单调队列优化dp】
    codeforces 949C
    codeforces 402E
    poj 3613 Cow Relays【矩阵快速幂+Floyd】
    bzoj 2097: [Usaco2010 Dec]Exercise 奶牛健美操【二分+树形dp】
  • 原文地址:https://www.cnblogs.com/zhangxw1992/p/7026456.html
Copyright © 2020-2023  润新知