• DateUtil 提供一些常用的时间想法的方法


    package com.opslab.util;


    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    /**
    * @author:Neptune
    * @Description:DateUtil 提供一些常用的时间想法的方法
    */
    public final class DateUtil {

    //日期时间类型格式
    private static final String DATETIME_FORMAT = OpslabConfig.DATETIME_FORMAT;

    //日期类型格式
    private static final String DATE_FORMAT = OpslabConfig.DATE_FORMAT;

    //时间类型的格式
    private static final String TIME_FORMAT = OpslabConfig.TIME_FORMAT;

    //注意SimpleDateFormat不是线程安全的
    private static ThreadLocal<SimpleDateFormat> ThreadDateTime = new ThreadLocal<SimpleDateFormat>();
    private static ThreadLocal<SimpleDateFormat> ThreadDate = new ThreadLocal<SimpleDateFormat>();
    private static ThreadLocal<SimpleDateFormat> ThreadTime = new ThreadLocal<SimpleDateFormat>();

    private static SimpleDateFormat DateTimeInstance() {
    SimpleDateFormat df = ThreadDateTime.get();
    if (df == null) {
    df = new SimpleDateFormat(DATETIME_FORMAT);
    ThreadDateTime.set(df);
    }
    return df;
    }

    private static SimpleDateFormat DateInstance() {
    SimpleDateFormat df = ThreadDate.get();
    if (df == null) {
    df = new SimpleDateFormat(DATE_FORMAT);
    ThreadDate.set(df);
    }
    return df;
    }

    private static SimpleDateFormat TimeInstance() {
    SimpleDateFormat df = ThreadTime.get();
    if (df == null) {
    df = new SimpleDateFormat(TIME_FORMAT);
    ThreadTime.set(df);
    }
    return df;
    }


    /**
    * 获取当前日期时间
    *
    * @return 返回当前时间的字符串值
    */
    public static String currentDateTime() {
    return DateTimeInstance().format(new Date());
    }

    /**
    * 将指定的时间格式化成出返回
    *
    * @param date
    * @return
    */
    public static String dateTime(Date date) {
    return DateTimeInstance().format(date);
    }

    /**
    * 将指定的字符串解析为时间类型
    *
    * @param datestr
    * @return
    * @throws ParseException
    */
    public static Date dateTime(String datestr) throws ParseException {
    return DateTimeInstance().parse(datestr);
    }

    /**
    * 获取当前的日期
    *
    * @return
    */
    public static String currentDate() {
    return DateInstance().format(new Date());
    }

    /**
    * 将指定的时间格式化成出返回
    *
    * @param date
    * @return
    */
    public static String date(Date date) {
    return DateInstance().format(date);
    }

    /**
    * 将指定的字符串解析为时间类型
    *
    * @param dateStr
    * @return
    * @throws ParseException
    */
    public static Date date(String dateStr) throws ParseException {
    return DateInstance().parse(dateStr);
    }

    /**
    * 获取当前的时间
    *
    * @return
    */
    public static String currentTime() {
    return TimeInstance().format(new Date());
    }

    /**
    * 讲指定的时间格式化成出返回
    *
    * @param date
    * @return
    */
    public static String time(Date date) {
    return TimeInstance().format(date);
    }

    /**
    * 将指定的字符串解析为时间类型
    *
    * @param dateStr
    * @return
    * @throws ParseException
    */
    public static Date time(String dateStr) throws ParseException {
    return TimeInstance().parse(dateStr);
    }


    /**
    * 在当前时间的基础上加或减去year年
    *
    * @param year
    * @return
    */
    public static Date year(int year) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(new Date());
    Cal.add(Calendar.YEAR, year);
    return Cal.getTime();
    }

    /**
    * 在指定的时间上加或减去几年
    *
    * @param date
    * @param year
    * @return
    */
    public static Date year(Date date, int year) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(date);
    Cal.add(java.util.Calendar.YEAR, year);
    return Cal.getTime();
    }

    /**
    * 在当前时间的基础上加或减去几月
    *
    * @param month
    * @return
    */
    public static Date month(int month) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(new Date());
    Cal.add(Calendar.MONTH, month);
    return Cal.getTime();
    }

    /**
    * 在指定的时间上加或减去几月
    *
    * @param date
    * @param month
    * @return
    */
    public static Date month(Date date, int month) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(date);
    Cal.add(java.util.Calendar.MONTH, month);
    return Cal.getTime();
    }

    /**
    * 在当前时间的基础上加或减去几天
    *
    * @param day
    * @return
    */
    public static Date day(int day) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(new Date());
    Cal.add(Calendar.DAY_OF_YEAR, day);
    return Cal.getTime();
    }

    /**
    * 在指定的时间上加或减去几天
    *
    * @param date
    * @param day
    * @return
    */
    public static Date day(Date date, int day) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(date);
    Cal.add(java.util.Calendar.DAY_OF_YEAR, day);
    return Cal.getTime();
    }

    /**
    * 在当前时间的基础上加或减去几小时-支持浮点数
    *
    * @param hour
    * @return
    */
    public static Date hour(float hour) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(new Date());
    Cal.add(java.util.Calendar.MINUTE, (int) (hour * 60));
    return Cal.getTime();
    }

    /**
    * 在制定的时间上加或减去几小时-支持浮点数
    *
    * @param date
    * @param hour
    * @return
    */
    public static Date hour(Date date, float hour) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(date);
    Cal.add(java.util.Calendar.MINUTE, (int) (hour * 60));
    return Cal.getTime();
    }

    /**
    * 在当前时间的基础上加或减去几分钟
    *
    * @param minute
    * @return
    */
    public static Date minute(int minute) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(new Date());
    Cal.add(java.util.Calendar.MINUTE, minute);
    return Cal.getTime();
    }

    /**
    * 在制定的时间上加或减去几分钟
    *
    * @param date
    * @param minute
    * @return
    */
    public static Date minute(Date date, int minute) {
    java.util.Calendar Cal = java.util.Calendar.getInstance();
    Cal.setTime(date);
    Cal.add(java.util.Calendar.MINUTE, minute);
    return Cal.getTime();
    }


    /**
    * 判断字符串是否为日期字符串
    *
    * @param date 日期字符串
    * @return true or false
    */
    public static boolean isDate(String date) {
    try {
    DateTimeInstance().parse(date);
    return true;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return false;
    }


    /**
    * 时间date1和date2的时间差-单位秒
    *
    * @param date1
    * @param date2
    * @return 秒
    */
    public static long subtract(Date date1, Date date2) {
    long cha = (date2.getTime() - date1.getTime()) / 1000;
    return cha;
    }

    /**
    * 时间date1和date2的时间差-单位秒
    *
    * @param date1
    * @param date2
    * @return 秒
    */
    public static long subtract(String date1, String date2) {
    long rs = 0;
    try {
    Date start = DateTimeInstance().parse(date1);
    Date end = DateTimeInstance().parse(date2);
    long cha = (end.getTime() - start.getTime()) / 1000;
    rs = cha;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return rs;
    }


    /**
    * 时间date1和date2的时间差 -单位分钟
    *
    * @param date1
    * @param date2
    * @return 分钟
    */
    public static int subtractMinute(String date1, String date2) {
    int rs = 0;
    try {
    Date start = DateTimeInstance().parse(date1);
    Date end = DateTimeInstance().parse(date2);
    long cha = (end.getTime() - start.getTime()) / 1000;
    rs = (int) cha / (60);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return rs;
    }

    /**
    * 时间date1和date2的时间差-单位分钟
    *
    * @param date1
    * @param date2
    * @return 分钟
    */
    public static int subtractMinute(Date date1, Date date2) {
    long cha = date2.getTime() - date1.getTime();
    return (int) cha / (1000 * 60);
    }

    /**
    * 时间date1和date2的时间差-单位小时
    *
    * @param date1
    * @param date2
    * @return 小时
    */
    public static int subtractHour(Date date1, Date date2) {
    long cha = (date2.getTime() - date1.getTime()) / 1000;
    return (int) cha / (60 * 60);
    }

    /**
    * 时间date1和date2的时间差-单位小时
    *
    * @param date1
    * @param date2
    * @return 小时
    */
    public static int subtractHour(String date1, String date2) {
    int rs = 0;
    try {
    Date start = DateTimeInstance().parse(date1);
    Date end = DateTimeInstance().parse(date2);
    long cha = (end.getTime() - start.getTime()) / 1000;
    rs = (int) cha / (60 * 60);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return rs;
    }


    /**
    * 时间date1和date2的时间差-单位天
    *
    * @param date1
    * @param date2
    * @return 天
    */
    public static int subtractDay(String date1, String date2) {
    int rs = 0;
    try {
    Date start = DateTimeInstance().parse(date1);
    Date end = DateTimeInstance().parse(date2);
    long sss = (end.getTime() - start.getTime()) / 1000;
    rs = (int) sss / (60 * 60 * 24);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return rs;
    }

    /**
    * 时间date1和date2的时间差-单位天
    *
    * @param date1
    * @param date2
    * @return 天
    */
    public static int subtractDay(Date date1, Date date2) {
    long cha = date2.getTime() - date1.getTime();
    return (int) cha / (1000 * 60 * 60 * 24);
    }

    /**
    * 时间date1和date2的时间差-单位月
    *
    * @param date1
    * @param date2
    * @return 月
    */
    public static int subtractMonth(String date1, String date2) {
    int result;
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    try {
    c1.setTime(DateInstance().parse(date1));
    c2.setTime(DateInstance().parse(date2));
    int year1 = c1.get(Calendar.YEAR);
    int month1 = c1.get(Calendar.MONTH);
    int year2 = c2.get(Calendar.YEAR);
    int month2 = c2.get(Calendar.MONTH);
    if (year1 == year2) {
    result = month2 - month1;
    } else {
    result = 12 * (year2 - year1) + month2 - month1;
    }
    } catch (ParseException e) {
    e.printStackTrace();
    result = -1;
    }
    return result;
    }

    /**
    * 时间date1和date2的时间差-单位月
    *
    * @param date1
    * @param date2
    * @return 月
    */
    public static int subtractMonth(Date date1, Date date2) {
    int result;
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    c1.setTime(date1);
    c2.setTime(date2);
    int year1 = c1.get(Calendar.YEAR);
    int month1 = c1.get(Calendar.MONTH);
    int year2 = c2.get(Calendar.YEAR);
    int month2 = c2.get(Calendar.MONTH);
    if (year1 == year2) {
    result = month2 - month1;
    } else {
    result = 12 * (year2 - year1) + month2 - month1;
    }
    return result;
    }

    /**
    * 时间date1和date2的时间差-单位年
    *
    * @param date1
    * @param date2
    * @return 年
    */
    public static int subtractYear(String date1, String date2) {
    int result;
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    try {
    c1.setTime(DateInstance().parse(date1));
    c2.setTime(DateInstance().parse(date2));
    int year1 = c1.get(Calendar.YEAR);
    int year2 = c2.get(Calendar.YEAR);
    result = year2 - year1;
    } catch (ParseException e) {
    e.printStackTrace();
    result = -1;
    }
    return result;
    }

    /**
    * 时间date1和date2的时间差-单位年
    *
    * @param date1
    * @param date2
    * @return 年
    */
    public static int subtractYear(Date date1, Date date2) {
    int result;
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    c1.setTime(date1);
    c2.setTime(date2);
    int year1 = c1.get(Calendar.YEAR);
    int year2 = c2.get(Calendar.YEAR);
    result = year2 - year1;
    return result;
    }

    /**
    * 获取俩个时间的查结果用时秒表示
    *
    * @param date1
    * @param date2
    * @return 几小时:几分钟:几秒钟
    * @Summary:此处可以讲计算结果包装成一个结构体返回便于格式化
    */
    public static String subtractTime(String date1, String date2) {
    String result = "";
    try {
    Date start = DateTimeInstance().parse(date1);
    Date end = DateTimeInstance().parse(date2);
    long sss = (end.getTime() - start.getTime()) / 1000;
    int hh = (int) sss / (60 * 60);
    int mm = (int) (sss - hh * 60 * 60) / (60);
    int ss = (int) (sss - hh * 60 * 60 - mm * 60);
    result = hh + ":" + mm + ":" + ss;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return result;
    }

    /**
    * 获取俩个时间的查结果用时秒表示
    *
    * @param date1
    * @param date2
    * @return 几天-几小时:几分钟:几秒钟
    * @Summary:此处可以讲计算结果包装成一个结构体返回便于格式化
    */
    public static String subtractDate(String date1, String date2) {
    String result = "";
    try {
    Date start = DateTimeInstance().parse(date1);
    Date end = DateTimeInstance().parse(date2);
    long sss = (end.getTime() - start.getTime()) / 1000;
    int dd = (int) sss / (60 * 60 * 24);
    int hh = (int) (sss - dd * 60 * 60 * 24) / (60 * 60);
    int mm = (int) (sss - dd * 60 * 60 * 24 - hh * 60 * 60) / (60);
    int ss = (int) (sss - dd * 60 * 60 * 24 - hh * 60 * 60 - mm * 60);
    result = dd + "-" + hh + ":" + mm + ":" + ss;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return result;
    }

    /**
    * 获取俩个时间之前的相隔的天数
    *
    * @param startTime
    * @param endTime
    * @return
    * @throws ParseException
    */
    public static int subDay(Date startTime, Date endTime) {
    int days = 0;
    Calendar can1 = Calendar.getInstance();
    can1.setTime(startTime);
    Calendar can2 = Calendar.getInstance();
    can2.setTime(endTime);
    int year1 = can1.get(Calendar.YEAR);
    int year2 = can2.get(Calendar.YEAR);

    Calendar can = null;
    if (can1.before(can2)) {
    days -= can1.get(Calendar.DAY_OF_YEAR);
    days += can2.get(Calendar.DAY_OF_YEAR);
    can = can1;
    } else {
    days -= can2.get(Calendar.DAY_OF_YEAR);
    days += can1.get(Calendar.DAY_OF_YEAR);
    can = can2;
    }
    for (int i = 0; i < Math.abs(year2 - year1); i++) {
    days += can.getActualMaximum(Calendar.DAY_OF_YEAR);
    can.add(Calendar.YEAR, 1);
    }

    return days;
    }

    /**
    * 获取俩个时间之前的相隔的天数
    *
    * @param startTime
    * @param endTime
    * @return
    * @throws ParseException
    */
    public static int subDay(String startTime, String endTime) {
    int days = 0;
    try {
    Date date1 = DateInstance().parse(DateInstance().format(DateTimeInstance().parse(startTime)));
    Date date2 = DateInstance().parse(DateInstance().format(DateTimeInstance().parse(endTime)));
    Calendar can1 = Calendar.getInstance();
    can1.setTime(date1);
    Calendar can2 = Calendar.getInstance();
    can2.setTime(date2);
    int year1 = can1.get(Calendar.YEAR);
    int year2 = can2.get(Calendar.YEAR);

    Calendar can = null;
    if (can1.before(can2)) {
    days -= can1.get(Calendar.DAY_OF_YEAR);
    days += can2.get(Calendar.DAY_OF_YEAR);
    can = can1;
    } else {
    days -= can2.get(Calendar.DAY_OF_YEAR);
    days += can1.get(Calendar.DAY_OF_YEAR);
    can = can2;
    }
    for (int i = 0; i < Math.abs(year2 - year1); i++) {
    days += can.getActualMaximum(Calendar.DAY_OF_YEAR);
    can.add(Calendar.YEAR, 1);
    }

    } catch (ParseException e) {
    e.printStackTrace();
    }
    return days;
    }

    /**
    * 返回俩个时间在时间段(例如每天的08:00-18:00)的时长-单位秒
    *
    * @param startDate
    * @param endDate
    * @param timeBurst 只就按该时间段内的08:00-18:00时长
    * @return 计算后的秒数
    * @throws ParseException
    * @summary 格式错误返回0
    */
    public static long subtimeBurst(String startDate, String endDate, String timeBurst)
    throws ParseException {
    Date start = DateTimeInstance().parse(startDate);
    Date end = DateTimeInstance().parse(endDate);
    return subtimeBurst(start, end, timeBurst);
    }

    /**
    * 返回俩个时间在时间段(例如每天的08:00-18:00)的时长-单位秒
    *
    * @param startDate
    * @param endDate
    * @param timeBurst 只就按该时间段内的08:00-18:00时长
    * @return 计算后的秒数
    * @throws ParseException
    */
    public static long subtimeBurst(Date startDate, Date endDate, String timeBurst)
    throws ParseException {
    long second = 0;
    Pattern p = Pattern.compile("^\d{2}:\d{2}-\d{2}:\d{2}");
    Matcher m = p.matcher(timeBurst);
    boolean falg = false;
    if (startDate.after(endDate)) {
    Date temp = startDate;
    startDate = endDate;
    endDate = temp;
    falg = true;
    }
    if (m.matches()) {
    String[] a = timeBurst.split("-");
    int day = subDay(startDate, endDate);
    if (day > 0) {
    long firstMintues = 0;
    long lastMintues = 0;
    long daySecond = 0;
    String strDayStart = DateInstance().format(startDate) + " " + a[0] + ":00";
    String strDayEnd = DateInstance().format(startDate) + " " + a[1] + ":00";
    Date dayStart = DateTimeInstance().parse(strDayStart);
    Date dayEnd = DateTimeInstance().parse(strDayEnd);
    daySecond = subtract(dayStart, dayEnd);
    if ((startDate.after(dayStart) || startDate.equals(dayStart))
    && startDate.before(dayEnd)) {
    firstMintues = (dayEnd.getTime() - startDate.getTime()) / 1000;
    } else if (startDate.before(dayStart)) {
    firstMintues = (dayEnd.getTime() - dayStart.getTime()) / 1000;
    }
    dayStart = DateTimeInstance().parse(DateInstance().format(endDate) + " " + a[0] + ":00");
    dayEnd = DateTimeInstance().parse(DateInstance().format(endDate) + " " + a[1] + ":00");
    if (endDate.after(dayStart) && (endDate.before(dayEnd) || endDate.equals(dayEnd))) {
    lastMintues = (endDate.getTime() - dayStart.getTime()) / 1000;
    } else if (endDate.after(dayEnd)) {
    lastMintues = (dayEnd.getTime() - dayStart.getTime()) / 1000;
    }
    //第一天的秒数 + 最好一天的秒数 + 天数*全天的秒数
    second = firstMintues + lastMintues;
    second += (day - 1) * daySecond;
    } else {
    String strDayStart = DateInstance().format(startDate) + " " + a[0] + ":00";
    String strDayEnd = DateInstance().format(startDate) + " " + a[1] + ":00";
    Date dayStart = DateTimeInstance().parse(strDayStart);
    Date dayEnd = DateTimeInstance().parse(strDayEnd);
    if ((startDate.after(dayStart) || startDate.equals(dayStart))
    && startDate.before(dayEnd) && endDate.after(dayStart)
    && (endDate.before(dayEnd) || endDate.equals(dayEnd))) {
    second = (endDate.getTime() - startDate.getTime()) / 1000;
    } else {
    if (startDate.before(dayStart)) {
    if (endDate.before(dayEnd)) {
    second = (endDate.getTime() - dayStart.getTime()) / 1000;
    } else {
    second = (dayEnd.getTime() - dayStart.getTime()) / 1000;
    }
    }
    if (startDate.after(dayStart)) {
    if (endDate.before(dayEnd)) {
    second = (endDate.getTime() - startDate.getTime()) / 1000;
    } else {
    second = (dayEnd.getTime() - startDate.getTime()) / 1000;
    }
    }
    }
    if ((startDate.before(dayStart) && endDate.before(dayStart))
    || startDate.after(dayEnd) && endDate.after(dayEnd)) {
    second = 0;
    }
    }
    } else {
    second = (endDate.getTime() - startDate.getTime()) / 1000;
    }
    if (falg) {
    second = Long.parseLong("-" + second);
    }
    return second;
    }

    /**
    * 时间Date在时间段(例如每天的08:00-18:00)上增加或减去second秒
    *
    * @param date
    * @param second
    * @param timeBurst
    * @return 计算后的时间
    * @Suumary 指定的格式错误后返回原数据
    */
    public static Date calculate(String date, int second, String timeBurst) {
    Date start = null;
    try {
    start = DateTimeInstance().parse(date);
    return calculate(start, second, timeBurst);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return new Date();
    }

    /**
    * 时间Date在时间段(例如每天的08:00-18:00)上增加或减去second秒
    *
    * @param date
    * @param second
    * @param timeBurst
    * @return 计算后的时间
    * @Suumary 指定的格式错误后返回原数据
    */
    public static Date calculate(Date date, int second, String timeBurst) {
    Pattern p = Pattern.compile("^\d{2}:\d{2}-\d{2}:\d{2}");
    Matcher m = p.matcher(timeBurst);
    java.util.Calendar cal = java.util.Calendar.getInstance();
    if (m.matches()) {
    String[] a = timeBurst.split("-");
    try {
    Date dayStart = DateTimeInstance().parse(DateInstance().format(date) + " " + a[0] + ":00");
    Date dayEnd = DateTimeInstance().parse(DateInstance().format(date) + " " + a[1] + ":00");
    int DaySecond = (int) subtract(dayStart, dayEnd);
    int toDaySecond = (int) subtract(dayStart, dayEnd);
    if (second >= 0) {
    if ((date.after(dayStart) || date.equals(dayStart))
    && (date.before(dayEnd) || date.equals(dayEnd))) {
    cal.setTime(date);
    toDaySecond = (int) subtract(date, dayEnd);
    }
    if (date.before(dayStart)) {
    cal.setTime(dayStart);
    toDaySecond = (int) subtract(dayStart, dayEnd);
    }
    if (date.after(dayEnd)) {
    cal.setTime(day(dayStart, 1));
    toDaySecond = 0;
    }

    if (second > toDaySecond) {
    int day = (second - toDaySecond) / DaySecond;
    int remainder = (second - toDaySecond) % DaySecond;
    cal.setTime(day(dayStart, 1));
    cal.add(Calendar.DAY_OF_YEAR, day);
    cal.add(Calendar.SECOND, remainder);
    } else {
    cal.add(Calendar.SECOND, second);
    }

    } else {
    if ((date.after(dayStart) || date.equals(dayStart))
    && (date.before(dayEnd) || date.equals(dayEnd))) {
    cal.setTime(date);
    toDaySecond = (int) subtract(date, dayStart);
    }
    if (date.before(dayStart)) {
    cal.setTime(day(dayEnd, -1));
    toDaySecond = 0;
    }
    if (date.after(dayEnd)) {
    cal.setTime(dayEnd);
    toDaySecond = (int) subtract(dayStart, dayEnd);
    }
    if (Math.abs(second) > Math.abs(toDaySecond)) {
    int day = (Math.abs(second) - Math.abs(toDaySecond)) / DaySecond;
    int remainder = (Math.abs(second) - Math.abs(toDaySecond)) % DaySecond;
    cal.setTime(day(dayEnd, -1));
    cal.add(Calendar.DAY_OF_YEAR, Integer.valueOf("-" + day));
    cal.add(Calendar.SECOND, Integer.valueOf("-" + remainder));
    } else {
    cal.add(Calendar.SECOND, second);
    }
    }
    } catch (ParseException e) {
    e.printStackTrace();
    }
    } else {
    cal.setTime(date);
    }
    return cal.getTime();
    }

    /**
    * 判断是否在某个时间段内
    * @param startTime
    * @param endTime
    * @param date
    * @return
    * @throws ParseException
    */
    public static boolean between(String startTime,String endTime,Date date)
    throws ParseException {
    return between(dateTime(startTime),dateTime(endTime),date);
    }

    /**
    * 判断在某个时间内
    * @param startTime
    * @param endTime
    * @param date
    * @return
    */
    public static boolean between(Date startTime,Date endTime,Date date){
    return date.after(startTime) && date.before(endTime);
    }
    }

  • 相关阅读:
    005 Python的IDE之Pycharm的使用
    006 Python的IDE之Jupyter的使用
    004 pip的使用
    003 Python解释器源修改
    002 Python解释器安装
    BZOJ 4567 [SCOI2016]背单词 (Trie树、贪心)
    BZOJ 2085 luogu P3502 [POI2010]Hamsters (KMP、Floyd、倍增)
    UOJ #219 BZOJ 4650 luogu P1117 [NOI2016]优秀的拆分 (后缀数组、ST表)
    UOJ #214 [UNR #1]合唱队形 (概率期望计数、DP、Min-Max容斥)
    LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254822.html
Copyright © 2020-2023  润新知