日期工具类

常用的一些关于日期的方法都在里面,自己封装的一个日期工具类

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtils extends org.apache.commons.lang.time.DateUtils{

    public static SimpleDateFormat sdfYYYYMMDDHHMMSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public static SimpleDateFormat sdfYYYYMMDD = new SimpleDateFormat("yyyy-MM-dd");

    public static SimpleDateFormat sdfyyyymmdd = new SimpleDateFormat("yyyyMMdd");
    private static Long seqence;

    /**
     * 查询
     * 
     * @param date
     * @return
     */
    public static String getCurrentDateString(Date date) {
        return sdfYYYYMMDD.format(date);
    }

    /**
     * 得到年
     * 
     * @param c
     * @return
     */
    public static int getYear(Calendar c) {
        if (c != null) {
            return c.get(Calendar.YEAR);
        }
        else {
            return Calendar.getInstance().get(Calendar.YEAR);
        }
    }

    /**
     * 得到月份 注意,这里的月份依然是从0开始的
     * 
     * @param c
     * @return
     */
    public static int getMonth(Calendar c) {
        if (c != null) {
            return c.get(Calendar.MONTH);
        }
        else {
            return Calendar.getInstance().get(Calendar.MONTH);
        }
    }

    /**
     * 得到日期
     * 
     * @param c
     * @return
     */
    public static int getDate(Calendar c) {
        if (c != null) {
            return c.get(Calendar.DATE);
        }
        else {
            return Calendar.getInstance().get(Calendar.DATE);
        }
    }

    /**
     * 得到星期
     * 
     * @param c
     * @return
     */
    public static int getDay(Calendar c) {
        if (c != null) {
            return c.get(Calendar.DAY_OF_WEEK);
        }
        else {
            return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
        }
    }

    /**
     * 得到小时
     * 
     * @param c
     * @return
     */
    public static int getHour(Calendar c) {
        if (c != null) {
            return c.get(Calendar.HOUR);
        }
        else {
            return Calendar.getInstance().get(Calendar.HOUR);
        }
    }

    /**
     * 得到分钟
     * 
     * @param c
     * @return
     */
    public static int getMinute(Calendar c) {
        if (c != null) {
            return c.get(Calendar.MINUTE);
        }
        else {
            return Calendar.getInstance().get(Calendar.MINUTE);
        }
    }

    /**
     * 得到秒
     * 
     * @param c
     * @return
     */
    public static int getSecond(Calendar c) {
        if (c != null) {
            return c.get(Calendar.SECOND);
        }
        else {
            return Calendar.getInstance().get(Calendar.SECOND);
        }
    }

    /**
     * 当前时间的前几天
     * 
     * @param date
     * @param n
     * @return
     */
    public static Date beforenDays(Date date, int n) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c = before(c, n);
        return c.getTime();
    }

    /**
     * 当前时间的前几天
     * 
     * @param date
     * @param n
     * @return
     */
    public static Date afterDays(Date date, int n) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c = after(c, n);
        return c.getTime();
    }

    /**
     * 昨天
     * 
     * @param c
     * @return
     */
    public static Calendar yesterday(Calendar c) {
        long offset = 1 * 24 * 60 * 60 * 1000;
        Calendar calendar = null;
        if (c != null) {
            calendar = c;
        }
        else {
            calendar = Calendar.getInstance();
        }
        calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
        return calendar;
    }

    /**
     * 明天
     * 
     * @param c
     * @return
     */
    public static Calendar tomorrow(Calendar c) {
        long offset = 1 * 24 * 60 * 60 * 1000;
        Calendar calendar = null;
        if (c != null) {
            calendar = c;
        }
        else {
            calendar = Calendar.getInstance();
        }
        calendar.setTimeInMillis(calendar.getTimeInMillis() + offset);
        return calendar;
    }

    /**
     * 得到指定或者当前时间前offset毫秒的Calendar
     * 
     * @param c
     * @param offset
     * @return
     */
    public static Calendar before(Calendar c, int offset) {
        Calendar calendar = null;
        if (c != null) {
            calendar = c;
        }
        else {
            calendar = Calendar.getInstance();
        }
        // calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
        calendar.add(Calendar.DATE, -offset);
        return calendar;
    }

    /**
     * 得到指定或者当前时间前offset毫秒的Calendar
     * 
     * @param c
     * @param offset
     * @return
     */
    public static Calendar after(Calendar c, int offset) {
        Calendar calendar = null;
        if (c != null) {
            calendar = c;
        }
        else {
            calendar = Calendar.getInstance();
        }
        calendar.add(Calendar.DATE, offset);
        return calendar;
    }

    /**
     * 日期格式化
     * 
     * @param c
     * @param pattern
     * @return
     */
    public static String format(Calendar c, String pattern) {
        Calendar calendar = null;
        if (c != null) {
            calendar = c;
        }
        else {
            calendar = Calendar.getInstance();
        }
        if (pattern == null || pattern.equals("")) {
            pattern = "yyyy年MM月dd日 HH:mm:ss";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(calendar.getTime());
    }

    /**
     * Date类型转换到Calendar类型
     * 
     * @param d
     * @return
     */
    public static Calendar Date2Calendar(Date d) {
        Calendar c = Calendar.getInstance();
        c.setTime(d);
        return c;
    }

    /**
     * Calendar类型转换到Date类型
     * 
     * @param c
     * @return
     */
    public static Date Calendar2Date(Calendar c) {
        return c.getTime();
    }

    /**
     * Date类型转换到Timestamp类型
     * 
     * @param d
     * @return
     */
    public static Timestamp Date2Timestamp(Date d) {
        return new Timestamp(d.getTime());
    }

    /**
     * Calendar类型转换到Timestamp类型
     * 
     * @param c
     * @return
     */
    public static Timestamp Calendar2Timestamp(Calendar c) {
        return new Timestamp(c.getTimeInMillis());
    }

    /**
     * Timestamp类型转换到Calendar类型
     * 
     * @param ts
     * @return
     */
    public static Calendar Timestamp2Calendar(Timestamp ts) {
        Calendar c = Calendar.getInstance();
        c.setTime(ts);
        return c;
    }

    /**
     * 得到当前时间的字符串表示 格式2010-02-02 12:12:12
     * 
     * @return
     */
    public static String getTimeString() {
        return format(Calendar.getInstance(), "yyyy-MM-dd HH:mm:ss");
    }

    public static Calendar sameDayZeroPoint(Calendar c) {
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c;
    }

    public static Date str2Date(String dtime, String pattern) {
        SimpleDateFormat sdfyyyyMMdd = new SimpleDateFormat(pattern);
        try {
            return sdfyyyyMMdd.parse(dtime);
        }
        catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * <p>
     * 将字符串转化为对应的时间戳数字,例:
     * 
     * @author zhang jinguang, 2015年12月30日
     * @param dtime
     * @param pattern
     * @throws ParseException
     * @return:date的long形式
     */
    public static long str2DateLong(String dtime, String pattern) throws ParseException {
        SimpleDateFormat sdfyyyyMMdd = new SimpleDateFormat(pattern);
        return sdfyyyyMMdd.parse(dtime).getTime();
    }
    public static long str2DateLong(String dtime) throws ParseException {
        SimpleDateFormat sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdfyyyyMMdd.parse(dtime).getTime();
    }
    public static Date str2Date(String dtime) {
        return str2Date(dtime, "yyyy-MM-dd HH:mm:ss");
    }

    public static Date addDay(Date dtime, int days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dtime);
        calendar.add(Calendar.DAY_OF_MONTH, days);
        return calendar.getTime();
    }

    public static Date addMonth(Date dtime, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dtime);
        calendar.add(Calendar.MONTH, month);
        return calendar.getTime();
    }

    public static int daysBetween(Date smdate, Date bdate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        smdate = sdf.parse(sdf.format(smdate));
        bdate = sdf.parse(sdf.format(bdate));
        Calendar cal = Calendar.getInstance();
        cal.setTime(smdate);
        long time1 = cal.getTimeInMillis();
        cal.setTime(bdate);
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600 * 24);
        return Integer.parseInt(String.valueOf(between_days));
    }

    public static int hoursBetween(Date smdate, Date bdate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        smdate = sdf.parse(sdf.format(smdate));
        bdate = sdf.parse(sdf.format(bdate));
        Calendar cal = Calendar.getInstance();
        cal.setTime(smdate);
        long time1 = cal.getTimeInMillis();
        cal.setTime(bdate);
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600);
        return Integer.parseInt(String.valueOf(between_days));
    }

    /***
     * 起始时间 @Title: getDayStart @param date @throws
     */
    public static Date getDayStart(Date date) {
        long time = date.getTime();
        return new Date(getDayStart(time));
    }

    /***
     * 结束时间 @Title: getDayEnd @param date @throws
     */
    public static Date getDayEnd(Date date) {
        long time = date.getTime();
        return new Date(getDayEnd(time));
    }

    /***
     * 结束时间 @Title: getDayEnd @param time @throws
     */
    public static long getDayEnd(long time) {
        return getDayStart(time) + 86400000;
    }

    /***
     * 起始时间 @Title: getDayStart @param time @throws
     */
    public static long getDayStart(long time) {
        long t = (time + 28800000) % 86400000;
        return time - t;
    }

    /***
     * 周一 @Title: getMonday @param date @throws
     */
    public static Date getMonday(Date date) {
        Calendar cal = Date2Calendar(date);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return cal.getTime();
    }

    /***
     * 当月最后一天 @Title: getFirstDayOfMonth @param date @throws
     */
    public static Date getFirstDayOfMonth(Date date) {
        Calendar cal = Date2Calendar(date);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return cal.getTime();
    }

    /***
     * 当月最后一天 @Title: getLastDayOfMonth @param date @throws
     */
    public static Date getLastDayOfMonth(Date date) {
        Calendar cal = Date2Calendar(date);
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.roll(Calendar.DAY_OF_MONTH, -1);
        return cal.getTime();
    }

    /**
     * date> date1 返回 true 否则 false
     * 
     * @param date
     * @param date1
     * @return
     */
    public static Boolean compare(Date date, Date date1) {
        return date.getTime() > date1.getTime();
    }

    public static void main(String[] args) throws ParseException {
        String today = "2015-12-30";
        System.out.println(str2DateLong(today, "yyyy-MM-dd"));
        System.out.println(str2DateLong(today, "yyyy-MM-dd") + 24 * 60 * 60 * 1000);
        Date curDate = new Date();
        // String date1 = str2Date(today, "yyyy-MM-dd");
        //
        // System.out.println(sdfYYYYMMDD.parse(today).getTime());
        // System.out.println(sdfYYYYMMDD.parse(today).getTime() );
        // Date start = getDayStart(curDate);
        // Date end = getDayEnd(curDate);
        //
        // System.out.println(sdfYYYYMMDDHHMMSS.format(start));
        // System.out.println(sdfYYYYMMDDHHMMSS.format(end));
        // System.out.println(sdfYYYYMMDDHHMMSS.format(beforenDays(curDate,
        // 2)));
        // System.out.println(sdfYYYYMMDDHHMMSS.format(afterDays(curDate, 2)));
    }

    public static String date2Str(Date curTime) {
        return sdfYYYYMMDDHHMMSS.format(curTime);
    }

    public static Long getSeqence() {
        return System.currentTimeMillis();
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值