【开发笔记】-时间工具类

package com.cjy.util;

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

public class DateTimeUtil {
    private static int weeks = 0;

    /**
     * 时间格式:yyyy-MM-dd HH:mm:ss
     */
    private static final String yyyy_MM_dd_HH__mm_ss = "yyyy-MM-dd HH:mm:ss";
    
    /**
     * 时间格式:yyyy-MM-dd
     */
    private static final String yyyy_MM_dd = "yyyy-MM-dd";
    
    /**
     * 时间格式:yyyy-MM
     */
    private static final String yyyy_MM = "yyyy-MM";

    /**
     * 获得当前日期与本周一相差的天数
     */
    public static int getMondayPlus() {
        Calendar cd = Calendar.getInstance();
        // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1;
        if (dayOfWeek == 1) {
            return 0;
        } else {
            return 1 - dayOfWeek;
        }
    }

    /**
     * 获得本周星期日的日期
     */
    public static String getCurrentWeekday() {
        weeks = 0;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    /**
     * 获得本周一的日期
     */
    public static String getMondayOFWeek() {
        weeks = 0;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    /**
     * 获得上周星期日的日期
     */
    public static String getPreviousWeekSunday() {
        weeks = 0;
        weeks--;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    /**
     * 获得上周星期一的日期
     */
    public static String getPreviousWeekday() {
        weeks = 0;
        weeks--;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    /**
     * 获得下周星期一的日期
     */
    public static String getNextMonday() {
        weeks++;
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    /**
     * 获得下周星期日的日期
     */
    public static String getNextSunday() {
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    /**
     * 获取当天日期
     * 
     * @param dateformat
     */
    public static String getNowTime(String dateformat) {
        Date now = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 格式化时间格式
        String hehe = dateFormat.format(now);
        return hehe;
    }

    /**
     * 获得前天的日期
     * 
     * @param dateformat
     */
    public static String getPreviousTimes(String dateformat) {
        Date date = new Date();
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(calendar.DATE, -2);// 把日期往后增加一天.整数往后推,负数往前移动
        date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
        SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
        String dateString = formatter.format(date);
        return dateString;
    }

    /**
     * 获得昨天的日期
     * 
     * @param dateformat
     */
    public static String getPreviousTime(String dateformat) {
        Date date = new Date();
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(calendar.DATE, -1);// 把日期往前减少一天.整数往后推,负数往前移动
        date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
        SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
        String dateString = formatter.format(date);
        return dateString;
    }
    /**
     * 获得明天的日期
     * 
     * @param dateformat
     */
    public static String getTomorrowTime(String dateformat) {
        Date date = new Date();
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(calendar.DATE, 1);// 把日期往前减少一天.整数往后推,负数往前移动
        date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
        SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
        String dateString = formatter.format(date);
        return dateString;
    }

    /**
     * 获得当月的第一天(0时0分0秒)
     * 
     * @return 类似(2014-07-31 00:00:00)
     */
    public static String getNowFirstMonthDay() {
        SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);
        Calendar c = Calendar.getInstance();
        c.add(Calendar.MONTH, 0);
        c.set(Calendar.DAY_OF_MONTH, c.getMinimum(Calendar.DAY_OF_MONTH));// 设置为1号,当前日期既为本月第一天
        String first = formatter.format(c.getTime());
        if(first != null && !first.equals("")){
            first += " 00:00:00";
        }
        return first;
    }

    /**
     * 获得当月的最后一天(23时59分59秒)
     * 
     * @return 类似(2014-07-31 23:59:59)
     */
    public static String getNowLastMonthDay() {
        SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.DAY_OF_MONTH,ca.getActualMaximum(Calendar.DAY_OF_MONTH));
        String last = formatter.format(ca.getTime());
        if(last != null && !last.equals("")){
            last += " 23:59:59";
        }
        return last;
    }
    
    /**
     * 获得当月的第一天(0时0分0秒)
     * 
     * @return 类似(2014-07-31 00:00:00)
     */
    public static String getNowFirstMonthDay(String dateformat) {
        SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
        Calendar c = Calendar.getInstance();
        c.add(Calendar.MONTH, 0);
        c.set(Calendar.DAY_OF_MONTH, c.getMinimum(Calendar.DAY_OF_MONTH));// 设置为1号,当前日期既为本月第一天
        String first = formatter.format(c.getTime());
        return first;
    }

    /**
     * 获得当月最后一天
     * 
     * @param dateformat
     *            时间格式
     * @return
     */
    public static String getNowLastMonthDay(String dateformat) {
        SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.DAY_OF_MONTH,ca.getActualMaximum(Calendar.DAY_OF_MONTH));
        String last = formatter.format(ca.getTime());
        return last;
    }

    /**
     * 获得指定Date类型日期月份的第一天
     * 
     * @param date
     *            Date类型的时间
     * @param dateformat
     *            时间格式
     * @return
     */
    public static String getFirstMonthDay(Date date, String dateformat) {
        SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.MONTH, 0);
        c.set(Calendar.DAY_OF_MONTH, c.getMinimum(Calendar.DAY_OF_MONTH));// 设置为1号,当前日期既为本月第一天
        String first = formatter.format(c.getTime());
        return first;
    }

    /**
     * 获得指定Date类型日期月份的最后一天
     * 
     * @param date
     *            Date类型的时间
     * @param dateformat
     *            时间格式
     * @return
     */
    public static String getLastMonthDay(Date date, String dateformat) {
        SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        String last = formatter.format(c.getTime());
        return last;
    }

    public static int getCountDay(int year, int month) {
        month = month - 1;
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month);// Java月份才0开始算 6代表上一个月7月
        return cal.getActualMaximum(Calendar.DATE);
    }

    /**
     * 获取指定时间的月份(如果月份小于10,则返回01-09形式的时间)
     * 
     * @param date
     *            Date格式的时间
     * @return 01-12
     */
    public static String getMonth(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM);
        String nowMonthTime = sdf.format(date);
        return nowMonthTime.substring(5, 7);
    }

    /**
     * 获取yyyy-MM格式的时间
     * 
     * @param date
     *            Date格式的时间
     * @param format
     *            指定时间格式
     * @return 返回yyyy-MM格式的时间
     */
    public static String getTimeByFormat(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    /**
     * 将字符串时间转变为java.util.Date格式时间
     * 
     * @param time
     *            字符串格式时间
     * @return java.util.Date
     */
    public static Date strTimeToDate(String time) {
        SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM);
        Date date = null;
        try {
            date = sdf.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    
    /**
     * 将字符串时间转变为java.util.Date格式时间,格式自定
     * 
     * @param time
     *            字符串格式时间
     * @param format
     * @return java.util.Date
     */
    public static Date strTimeToDate(String time,String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date = null;
        try {
            date = sdf.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 获取指定时间的上个月的yyyy-MM格式的时间
     * 
     * @param date
     * @return
     */
    public static String getLastMonth(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int months = calendar.get(Calendar.MONTH);
        calendar.set(Calendar.MONTH, (months - 1));
        calendar.set(Calendar.DAY_OF_MONTH,
                calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date strDateTo = calendar.getTime();
        return sdf.format(strDateTo);
    }

    
    

    
    /**
     * 判断时间date1是否在时间date2之前<br/>
     * 如果第一个时间小于第二个时间返回true,反之返回false
     * (参数时间格式为yyyy-MM-dd)
     * @param date1 要比较的第一个时间
     * @param date2 要比较的第二个时间
     * @return date1<date2 返回true,date1>date2返回false,相等时等同于date1>date2
     */
    public static boolean isDateBeforeToBoolean(String date1, String date2) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);
            return sdf.parse(date1).before(sdf.parse(date2));
        } catch (ParseException e) {
            System.out.print("[SYS] " + e.getMessage());
            return false;
        }
    }
    
    /**
     * 判断时间date1是否在时间date2之后<br/>
     * 如果第一个时间大于于第二个时间返回true,反之返回false
     * (参数时间格式为yyyy-MM-dd)
     * @param date1 要比较的第一个时间
     * @param date2 要比较的第二个时间
     * @return date1>date2 返回true,date1<date2返回false,相等时等同于date1<date2
     */
    public static boolean isDateAfterToBoolean(String date1, String date2) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);
            return sdf.parse(date1).after(sdf.parse(date2));
        } catch (ParseException e) {
            System.out.print("[SYS] " + e.getMessage());
            return false;
        }
    }
    

    
    
    
    
    /**
     * (时间比较)获取两个yyy-MM-dd格式时间中较小的时间,如果时间相等,则返回第二个时间<br/>
     * (参数时间格式为yyyy-MM-dd)
     * 
     * @param date1
     *            要比较的第一个时间
     * @param date2
     *            要比较的第二个时间
     * @return 返回小的时间
     */
    public static String getBeforeTime(String date1, String date2) {
        if(date1 != null && date1.length() > 0 && date2 != null && date2.length() > 0){
            return null;
        }
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);
            boolean falg = sdf.parse(date1).before(sdf.parse(date2));
            if (falg) {
                return date1;
            } else {
                return date2;
            }
        } catch (ParseException e) {
            System.out.print("[SYS] " + e.getMessage());
            return null;
        }
    }

    /**
     * (时间比较)获取两个yyy-MM-dd格式时间中较大的时间,如果时间相等,则返回第二个时间<br/>
     * (参数时间格式为yyyy-MM-dd)
     * 
     * @param date1
     *            要比较的第一个时间
     * @param date2
     *            要比较的第二个时间
     * @return 返回大的时间
     */
    public static String getAfterTime(String date1, String date2) {
        if(date1 != null && date1.length() > 0 && date2 != null && date2.length() > 0){
            return null;
        }
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);
            boolean falg = sdf.parse(date1).after(sdf.parse(date2));
            if (falg) {
                return date1;
            } else {
                return date2;
            }
        } catch (ParseException e) {
            System.out.print("[SYS] " + e.getMessage());
            return null;
        }
    }

    /**
     * 将时间戳转换为时间
     * @param s     时间戳
     * @return
     */
    public static String stampToDate(String s){
        String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long lt = new Long(s);
        Date date = new Date(lt*1000);
        res = simpleDateFormat.format(date);
        return res;
    }
}
package com.cjy.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期转换工具。<br/>
 * <br/>
 * 本类用于日期格式转换,其中包含了文本转日期、日期转文本,转换为特定格式的日期(字符串),根据变量改变日期等日期常用操作。<br/>
 * <br/>
 * <b>Example:</b><br/>
 * <br/>
 * 
 * @author 李凯飞
 * @version Ver 1.0.1 2014-04-21 改订
 * @since 1.0
 */

public class DateUtil {

    /**
     * 获取当前时间格式yyy-MM-dd HH:mm:ss时间字符串
     * 
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static String getNowDateStr() {
        return dateConvertStr(new Date(), "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 获取当前时间格式yyy-MM-dd时间字符串
     * 
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static String getNowDateDayStr() {
        return dateConvertStr(new Date(), "yyyy-MM-dd");
    }

    /**
     * 将Date类型转换成yyy-MM-dd HH:mm:ss 字符串类型
     * 
     * @param Date
     *            date
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static String dateConvertStr(Date date) {
        return dateConvertStr(date, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 将Date类型转换成yyy-MM-dd字符串类型
     * 
     * @param Date
     *            date
     * @param String
     *            format 如:yyyy-MM-dd HH:mm:ss
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static String dateConvertDayStr(Date date) {
        return dateConvertStr(date, "yyyy-MM-dd");
    }

    /**
     * 将Date类型转换成字符串类型
     * 
     * @param Date
     *            date
     * @param String
     *            format 如:yyyy-MM-dd HH:mm:ss
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static String dateConvertStr(Date date, String format) {
        return (date == null) ? null : new SimpleDateFormat(format)
                .format(date);
    }

    /**
     * 时间格式字符串转换成Date类型
     * 
     * @param String
     *            date
     * @param String
     *            format 如:yyyy-MM-dd HH:mm:ss
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static Date dateStrConvertDate(String date, String format) {
        try {
            SimpleDateFormat simpledateformat = new SimpleDateFormat(format);
            Date newdate = simpledateformat.parse(date);
            return newdate;
        } catch (Exception e) {
            return null;
        }

    }

    /**
     * 根据日期获取当前为星期几
     * 
     * @param date
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static int getWeek(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int weekno = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (weekno == 0)
            weekno = 7;
        return weekno;

    }

    /**
     * 计算两个时间间隔多少天
     * 
     * @param startday
     * @param endday
     * @return
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static int getIntervalDays(Date startday, Date endday) {
        if (startday.after(endday)) {
            Date cal = startday;
            startday = endday;
            endday = cal;
        }
        long sl = startday.getTime();
        long el = endday.getTime();
        long ei = el - sl;
        return (int) (ei / (1000 * 60 * 60 * 24));
    }

    /**
     * 指定时间对象,根据日历的规则,为给定的日历字段添加或减去指定的时间量,返回时间对象
     * 
     * @param date
     *            Date类型
     * @param field
     *            int 日历字段,如:Calendar.DAY_OF_MONTH
     * @param amount
     *            int 为字段添加的日期或时间量。
     * @return Date值
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static Date getDate(Date date, int field, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(field, amount);
        return cal.getTime();
    }

    /**
     * 指定时间对象,根据日历的规则,为给定的日历字段添加或减去指定的天数,返回时间对象
     * 
     * @param date
     *            Date类型
     * @param day
     *            天 int 为字段添加的日期或时间量。
     * @return Date值
     * @author: NQY
     * @Createtime: Sep 14, 2012
     */
    public static Date getDateMonth(Date date, int day) {
        return getDate(date, Calendar.MONTH, day);
    }

    /**
     * 获取指定时间在当年中的第几周
     * 
     * @param date
     *            Date类型
     * @return
     * @author: NQY
     * @Createtime: Aug 13, 2012
     */
    public static int getWeekNumber(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.WEEK_OF_YEAR);

    }

    /**
     * 获取当前时间在当年中的第几周
     * 
     * @return
     * @author: NQY
     * @Createtime: Aug 13, 2012
     */
    public static int getWeekNumber() {

        return getWeekNumber(new Date());

    }
    /**
     * 
     * author:                  wqm
     * Created:                 Apr 15, 2014 2:24:17 PM 
     * <font color="red">Description:取当前时间 后 2分钟 和 后10分钟</font>
     * 
     * @return String 如 10#40#10#50#
     */
    public static String getUpCheckTime(int upspace, int checkspace){
        StringBuilder sb = new StringBuilder("");
        String currenttime = dateConvertStr(new Date(), "HH:mm:ss");
        String[] currentArr = currenttime.split(":");
        //上传时间间隔
        if(Integer.parseInt(currentArr[1])+upspace >= 60){
            sb.append(Integer.parseInt(currentArr[0])+1).append("#").append(Integer.parseInt(currentArr[1])+upspace-60).append("#");
        }else{
            sb.append(currentArr[0]).append("#").append(Integer.parseInt(currentArr[1])+upspace).append("#");
        }
        //签到时间间隔
        if(Integer.parseInt(currentArr[1])+checkspace >= 60){
            sb.append(Integer.parseInt(currentArr[0])+1).append("#").append(Integer.parseInt(currentArr[1])+checkspace-60).append("#");
        }else{
            sb.append(currentArr[0]).append("#").append(Integer.parseInt(currentArr[1])+checkspace).append("#");
        }
        return sb.toString();
    }

    /**
     * 获得该月第一天
     * 
     * @param year
     * @param month
     * @return
     */
    public static String getFirstDayOfMonth(int year, int month) {
        Calendar cal = Calendar.getInstance();
        // 设置年份
        cal.set(Calendar.YEAR, year);
        // 设置月份
        cal.set(Calendar.MONTH, month - 1);
        // 获取某月最小天数
        int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
        // 设置日历中月份的最小天数
        cal.set(Calendar.DAY_OF_MONTH, firstDay);
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String firstDayOfMonth = sdf.format(cal.getTime());
        return firstDayOfMonth;
    }

    /**
     * 获得该月最后一天
     * 
     * @param year
     * @param month
     * @return
     */
    public static String getLastDayOfMonth(int year, int month) {
        Calendar cal = Calendar.getInstance();
        // 设置年份
        cal.set(Calendar.YEAR, year);
        // 设置月份
        cal.set(Calendar.MONTH, month - 1);
        // 获取某月最大天数
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        // 设置日历中月份的最大天数
        cal.set(Calendar.DAY_OF_MONTH, lastDay);
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String lastDayOfMonth = sdf.format(cal.getTime());
        return lastDayOfMonth;
    }
    
    public static void main(String[] args) {
        Date a = getDate(new Date(), Calendar.MONTH, 1);
        String a1 = dateConvertDayStr(a);
        System.out.println(a1);
        
    }
}

package com.cjy.util;
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;
public class DateTimeUtil {private static int weeks = 0;
/** * 时间格式:yyyy-MM-dd HH:mm:ss */private static final String yyyy_MM_dd_HH__mm_ss = "yyyy-MM-dd HH:mm:ss";/** * 时间格式:yyyy-MM-dd */private static final String yyyy_MM_dd = "yyyy-MM-dd";/** * 时间格式:yyyy-MM */private static final String yyyy_MM = "yyyy-MM";
/** * 获得当前日期与本周一相差的天数 */public static int getMondayPlus() {Calendar cd = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1;if (dayOfWeek == 1) {return 0;} else {return 1 - dayOfWeek;}}
/** * 获得本周星期日的日期 */public static String getCurrentWeekday() {weeks = 0;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}
/** * 获得本周一的日期 */public static String getMondayOFWeek() {weeks = 0;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}
/** * 获得上周星期日的日期 */public static String getPreviousWeekSunday() {weeks = 0;weeks--;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}
/** * 获得上周星期一的日期 */public static String getPreviousWeekday() {weeks = 0;weeks--;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}
/** * 获得下周星期一的日期 */public static String getNextMonday() {weeks++;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}
/** * 获得下周星期日的日期 */public static String getNextSunday() {int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}
/** * 获取当天日期 *  * @param dateformat */public static String getNowTime(String dateformat) {Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 格式化时间格式String hehe = dateFormat.format(now);return hehe;}
/** * 获得前天的日期 *  * @param dateformat */public static String getPreviousTimes(String dateformat) {Date date = new Date();Calendar calendar = new GregorianCalendar();calendar.setTime(date);calendar.add(calendar.DATE, -2);// 把日期往后增加一天.整数往后推,负数往前移动date = calendar.getTime(); // 这个时间就是日期往后推一天的结果SimpleDateFormat formatter = new SimpleDateFormat(dateformat);String dateString = formatter.format(date);return dateString;}
/** * 获得昨天的日期 *  * @param dateformat */public static String getPreviousTime(String dateformat) {Date date = new Date();Calendar calendar = new GregorianCalendar();calendar.setTime(date);calendar.add(calendar.DATE, -1);// 把日期往前减少一天.整数往后推,负数往前移动date = calendar.getTime(); // 这个时间就是日期往后推一天的结果SimpleDateFormat formatter = new SimpleDateFormat(dateformat);String dateString = formatter.format(date);return dateString;}/** * 获得明天的日期 *  * @param dateformat */public static String getTomorrowTime(String dateformat) {Date date = new Date();Calendar calendar = new GregorianCalendar();calendar.setTime(date);calendar.add(calendar.DATE, 1);// 把日期往前减少一天.整数往后推,负数往前移动date = calendar.getTime(); // 这个时间就是日期往后推一天的结果SimpleDateFormat formatter = new SimpleDateFormat(dateformat);String dateString = formatter.format(date);return dateString;}
/** * 获得当月的第一天(0时0分0秒) *  * @return 类似(2014-07-31 00:00:00) */public static String getNowFirstMonthDay() {SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH, c.getMinimum(Calendar.DAY_OF_MONTH));// 设置为1号,当前日期既为本月第一天String first = formatter.format(c.getTime());if(first != null && !first.equals("")){first += " 00:00:00";}return first;}
/** * 获得当月的最后一天(23时59分59秒) *  * @return 类似(2014-07-31 23:59:59) */public static String getNowLastMonthDay() {SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);Calendar ca = Calendar.getInstance();ca.set(Calendar.DAY_OF_MONTH,ca.getActualMaximum(Calendar.DAY_OF_MONTH));String last = formatter.format(ca.getTime());if(last != null && !last.equals("")){last += " 23:59:59";}return last;}/** * 获得当月的第一天(0时0分0秒) *  * @return 类似(2014-07-31 00:00:00) */public static String getNowFirstMonthDay(String dateformat) {SimpleDateFormat formatter = new SimpleDateFormat(dateformat);Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH, c.getMinimum(Calendar.DAY_OF_MONTH));// 设置为1号,当前日期既为本月第一天String first = formatter.format(c.getTime());return first;}
/** * 获得当月最后一天 *  * @param dateformat *            时间格式 * @return */public static String getNowLastMonthDay(String dateformat) {SimpleDateFormat formatter = new SimpleDateFormat(dateformat);Calendar ca = Calendar.getInstance();ca.set(Calendar.DAY_OF_MONTH,ca.getActualMaximum(Calendar.DAY_OF_MONTH));String last = formatter.format(ca.getTime());return last;}
/** * 获得指定Date类型日期月份的第一天 *  * @param date *            Date类型的时间 * @param dateformat *            时间格式 * @return */public static String getFirstMonthDay(Date date, String dateformat) {SimpleDateFormat formatter = new SimpleDateFormat(dateformat);Calendar c = Calendar.getInstance();c.setTime(date);c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH, c.getMinimum(Calendar.DAY_OF_MONTH));// 设置为1号,当前日期既为本月第一天String first = formatter.format(c.getTime());return first;}
/** * 获得指定Date类型日期月份的最后一天 *  * @param date *            Date类型的时间 * @param dateformat *            时间格式 * @return */public static String getLastMonthDay(Date date, String dateformat) {SimpleDateFormat formatter = new SimpleDateFormat(dateformat);Calendar c = Calendar.getInstance();c.setTime(date);c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));String last = formatter.format(c.getTime());return last;}
public static int getCountDay(int year, int month) {month = month - 1;Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, year);cal.set(Calendar.MONTH, month);// Java月份才0开始算 6代表上一个月7月return cal.getActualMaximum(Calendar.DATE);}
/** * 获取指定时间的月份(如果月份小于10,则返回01-09形式的时间) *  * @param date *            Date格式的时间 * @return 01-12 */public static String getMonth(Date date) {SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM);String nowMonthTime = sdf.format(date);return nowMonthTime.substring(5, 7);}
/** * 获取yyyy-MM格式的时间 *  * @param date *            Date格式的时间 * @param format *            指定时间格式 * @return 返回yyyy-MM格式的时间 */public static String getTimeByFormat(Date date, String format) {SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(date);}
/** * 将字符串时间转变为java.util.Date格式时间 *  * @param time *            字符串格式时间 * @return java.util.Date */public static Date strTimeToDate(String time) {SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM);Date date = null;try {date = sdf.parse(time);} catch (ParseException e) {e.printStackTrace();}return date;}/** * 将字符串时间转变为java.util.Date格式时间,格式自定 *  * @param time *            字符串格式时间 * @param format * @return java.util.Date */public static Date strTimeToDate(String time,String format) {SimpleDateFormat sdf = new SimpleDateFormat(format);Date date = null;try {date = sdf.parse(time);} catch (ParseException e) {e.printStackTrace();}return date;}
/** * 获取指定时间的上个月的yyyy-MM格式的时间 *  * @param date * @return */public static String getLastMonth(Date date) {SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int months = calendar.get(Calendar.MONTH);calendar.set(Calendar.MONTH, (months - 1));calendar.set(Calendar.DAY_OF_MONTH,calendar.getActualMaximum(Calendar.DAY_OF_MONTH));Date strDateTo = calendar.getTime();return sdf.format(strDateTo);}

/** * 判断时间date1是否在时间date2之前<br/> * 如果第一个时间小于第二个时间返回true,反之返回false * (参数时间格式为yyyy-MM-dd) * @param date1 要比较的第一个时间 * @param date2 要比较的第二个时间 * @return date1<date2 返回true,date1>date2返回false,相等时等同于date1>date2 */public static boolean isDateBeforeToBoolean(String date1, String date2) {try {SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);return sdf.parse(date1).before(sdf.parse(date2));} catch (ParseException e) {System.out.print("[SYS] " + e.getMessage());return false;}}/** * 判断时间date1是否在时间date2之后<br/> * 如果第一个时间大于于第二个时间返回true,反之返回false * (参数时间格式为yyyy-MM-dd) * @param date1 要比较的第一个时间 * @param date2 要比较的第二个时间 * @return date1>date2 返回true,date1<date2返回false,相等时等同于date1<date2 */public static boolean isDateAfterToBoolean(String date1, String date2) {try {SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);return sdf.parse(date1).after(sdf.parse(date2));} catch (ParseException e) {System.out.print("[SYS] " + e.getMessage());return false;}}
/** * (时间比较)获取两个yyy-MM-dd格式时间中较小的时间,如果时间相等,则返回第二个时间<br/> * (参数时间格式为yyyy-MM-dd) *  * @param date1 *            要比较的第一个时间 * @param date2 *            要比较的第二个时间 * @return 返回小的时间 */public static String getBeforeTime(String date1, String date2) {if(date1 != null && date1.length() > 0 && date2 != null && date2.length() > 0){return null;}try {SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);boolean falg = sdf.parse(date1).before(sdf.parse(date2));if (falg) {return date1;} else {return date2;}} catch (ParseException e) {System.out.print("[SYS] " + e.getMessage());return null;}}
/** * (时间比较)获取两个yyy-MM-dd格式时间中较大的时间,如果时间相等,则返回第二个时间<br/> * (参数时间格式为yyyy-MM-dd) *  * @param date1 *            要比较的第一个时间 * @param date2 *            要比较的第二个时间 * @return 返回大的时间 */public static String getAfterTime(String date1, String date2) {if(date1 != null && date1.length() > 0 && date2 != null && date2.length() > 0){return null;}try {SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.yyyy_MM_dd);boolean falg = sdf.parse(date1).after(sdf.parse(date2));if (falg) {return date1;} else {return date2;}} catch (ParseException e) {System.out.print("[SYS] " + e.getMessage());return null;}}
/** * 将时间戳转换为时间 * @param s     时间戳 * @return */    public static String stampToDate(String s){        String res;        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        long lt = new Long(s);        Date date = new Date(lt*1000);        res = simpleDateFormat.format(date);        return res;    }}

原文地址:https://www.cnblogs.com/juihai/p/12914979.html