时间工具类java

来源:互联网 发布:智睿高清网络电视下载 编辑:程序博客网 时间:2024/05/21 20:22

时间工具类


package com.newyulong.bcp.utils;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Locale;import org.apache.commons.lang.StringUtils;public class DateUtil {/** * 日期格式化字符串->全数字表示yyyyMMddHHmmss */public static final String TIME_FORMAT_DIGITAL = "yyyyMMddHHmmss";/** * 日期格式化字符串->全数字表示yyyyMMdd */public static final String TIME_FORMAT_DAY_1 = "yyyyMMdd";/** * 日期格式化字符串->HH:mm */public static final String TIME_FORMAT_HOUR = "yyyyMMddHHmmss";/** * 日期格式化字符串 到秒yyyy-MM-dd HH:mm:ss */public static final String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";/** * 日期格式化字符串 到天yyyy-MM-dd */public static final String TIME_FORMAT_DAY = "yyyy-MM-dd";/** * 日期格式化字符串 到毫秒yyyy-MM-dd HH:mm:ss.SSS */public static final String TIME_FORMAT_MSEL = "yyyy-MM-dd HH:mm:ss.SSS";/** * oracle中日期格式化字符串yyyy-mm-dd hh24:mi:ss */public static final String TIME_FORMAT_ORACLE = "yyyy-mm-dd hh24:mi:ss";/** * oracle中日期格式化字符串HH:mm */public static final String TIME_FORMAT_HHMM = "HH:mm";/** * oracle中日期格式化字符串HH:mm */public static final String TIME_FORMAT_HOUR_ONLY = "yyyy-MM-dd HH";/** * 日期格式化字符串 到月yyyy-MM */public static final String TIME_FORMAT_MONTH = "yyyy-MM";public static final String TIME_FORMAT_MONTH_MM_DD = "yyyy/MM/dd";/** * 返回系统时间 *   * @return long * @author:lipeng * @date:2012-12-6 */public static long getcurrentTime(){return System.currentTimeMillis();}/** * 获取服务器当前日期 * @return */public static Date getCurrentDate() {return new Date(System.currentTimeMillis());}/** * 获取服务器当前时间的字符串 ,格式 :yyyy-MM-dd HH:mm:ss * @return */public static String getCurrentDateStr(){return convertDateToStr(getCurrentDate(), TIME_FORMAT);}/** * 获取当前时间到指定hour时间的字符串 * @param hour指定hour,-1指前一小时,+1指后一小时 * @return String * @author:lipeng * @date:2013-3-7 */public static String getCurrentToHour(int hour,String format){Calendar calendar = Calendar.getInstance();calendar.add(Calendar.HOUR, hour); // 得到提前hour小时Date oneHourBefore = calendar.getTime();return convertDateToStr(oneHourBefore,format);}/** * 得到当天的23:59:59秒的指定格式的字符串值 *   * @param format * @return String * @author:lipeng * @date:2013-1-16 */public static String getCurrentLastesStr(String format){Calendar cal = Calendar.getInstance();cal.setTime(getCurrentDate());SimpleDateFormat sdf = new SimpleDateFormat(format);convertDateToStr(getCurrentDate(), format);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);return sdf.format(cal.getTime());}/** * 获取指定日期的23:59:59秒的指定格式的date *   * @param date * @param format * @return String * @author:lipeng * @date:2013-1-16 */public static Date getCurrentLastesStr(Date date){Calendar cal = Calendar.getInstance();cal.setTime(date);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);return cal.getTime();}/** * 获取指定天数的2013-01-01 23:59:59秒的指定格式的date */public static String getLastesDayStr(int date){Calendar cal = Calendar.getInstance();cal.add(Calendar.DAY_OF_MONTH, date);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);// 获取昨天的时间return convertDateToStr(cal.getTime(),TIME_FORMAT);}/** * 获取当天的零点的日期,00:00:01 *   * @return Date * @author:lipeng * @date:2013-1-16 */public static String getCurrentFirstStr(String format){SimpleDateFormat sdf = new SimpleDateFormat(format);Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 1);cal.add(Calendar.DAY_OF_MONTH, 0);return sdf.format(cal.getTime());}/** * 获取服务器当前时间的字符串 ,格式:指定 *   * @param format * @return String * @author:lipeng * @date:2013-1-6 */public static String getCurrentDateStr(String format){return convertDateToStr(getCurrentDate(), format);}/** * 增加天数 * @param date * @param days * @return */public static Date addDate(Date date, int days) {if (date == null) return date;Locale loc = Locale.getDefault();GregorianCalendar cal = new GregorianCalendar(loc);cal.setTime(date);int day = cal.get(Calendar.DAY_OF_MONTH);int month = cal.get(Calendar.MONTH);int year = cal.get(Calendar.YEAR);cal.set(year, month, day + days);return cal.getTime();}/** * 增加天/小时/分钟/秒 *   * @param date时间 * @param days天 * @param hours小时 * @param mins分钟 * @param second秒 * @return Date * @author:lipeng * @date:Dec 26, 2013 */public static Date addDate(Date date, int days,int hours,int mins,int second) {if (date == null) return date;Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.DAY_OF_MONTH, days);cal.add(Calendar.HOUR, hours);cal.add(Calendar.MINUTE, mins);cal.add(Calendar.SECOND, second);return cal.getTime();}/** * 增加天/小时/分钟/秒 *   * @param date时间 * @param days天 * @param hours小时 * @param mins分钟 * @param second秒 * @return Date * @author:lipeng * @date:Dec 26, 2013 */public static Date addDate(String date, int days,int hours,int mins,int second) {if(StringUtils.isBlank(date)){throw new IllegalArgumentException("DateUtil.addDate()方法非法参数值:" + date);}Calendar cal = Calendar.getInstance();cal.setTime(convertStrToDate(date,TIME_FORMAT));cal.add(Calendar.DAY_OF_MONTH, days);cal.add(Calendar.HOUR, hours);cal.add(Calendar.MINUTE, mins);cal.add(Calendar.SECOND, second);return cal.getTime();}/** * 获取前几天或后几天的日期 *   * @param days * @return Date * @author:lipeng * @date:2013-1-16 */public static Date addDate(int days){Calendar cal = Calendar.getInstance();cal.add(Calendar.DAY_OF_MONTH, days);return cal.getTime();}/** * 获取前一天所处的周的星期一 *   * @return Date  几天前或后的时间 * @author:lipeng * @date:2013-3-12 */public static Date getWeekStar(int day){Calendar cal = new GregorianCalendar();  cal.add(Calendar.DAY_OF_WEEK, day);cal.setFirstDayOfWeek(Calendar.MONDAY);  cal.set(Calendar.HOUR_OF_DAY, 0);  cal.set(Calendar.MINUTE, 0);  cal.set(Calendar.SECOND, 0);  cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);  return cal.getTime();}/** * 获取前一天所处的周的星期天 *   * @param day 几天前或后的时间 * @return Date * @author:lipeng * @date:2013-3-12 */public static Date getWeekEnd(int day){Calendar cal = new GregorianCalendar(); cal.add(Calendar.DAY_OF_WEEK, day);cal.setFirstDayOfWeek(Calendar.MONDAY);  cal.set(Calendar.HOUR_OF_DAY, 23);  cal.set(Calendar.MINUTE, 59);  cal.set(Calendar.SECOND, 59);  cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);  return cal.getTime();}/** * 获取指定日期所处的周的星期一 *   * @return Date * @author:lipeng * @date:2013-3-12 */public static Date getWeekStar(int year,int month,int date){Calendar cal = new GregorianCalendar();  cal.set(year, month, date);cal.setFirstDayOfWeek(Calendar.MONDAY);  cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);  return cal.getTime();}/** * 获取指定日期所处的周的星期天 *   * @param day * @return Date * @author:lipeng * @date:2013-3-12 */public static Date getWeekEnd(int year,int month,int date){Calendar cal = new GregorianCalendar(); cal.set(year, month, date);cal.setFirstDayOfWeek(Calendar.MONDAY);  cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);  return cal.getTime();}/** * 获取前一天所处的月头 *   * @param day * @return Date * @author:lipeng * @date:2013-3-12 */public static Date getMonthStar(int month){Calendar cal = new GregorianCalendar(); cal.add(Calendar.MONTH, month);cal.set(Calendar.DAY_OF_MONTH, 1);  cal.set(Calendar.HOUR_OF_DAY, 0);  cal.set(Calendar.MINUTE, 0);  cal.set(Calendar.SECOND, 0);  return cal.getTime();}/** * 获取前一天所处的月尾 *   * @param day * @return Date * @author:lipeng * @date:2013-3-12 */public static Date getMonthEnd(int month){Calendar cal = new GregorianCalendar(); cal.add(Calendar.MONTH, 1 + month);cal.set(Calendar.DAY_OF_MONTH, 0); cal.set(Calendar.HOUR_OF_DAY, 23);  cal.set(Calendar.MINUTE, 59);  cal.set(Calendar.SECOND, 59);  return cal.getTime();}/** * 将字符串转换为日期格式  * @param dateStr * @param dateFormat * @return */public static Date convertStrToDate(String dateStr, String dateFormat) {if (dateStr == null || dateStr.equals("")) {return null;}SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);try {return sdf.parse(dateStr);}catch (Exception e) {throw new RuntimeException("DateUtil.convertStrToDate():" + e.getMessage());}}/** * 将日期转换为字符串格式 * @param date * @param dateFormat * @return */public static String convertDateToStr(Date date, String dateFormat) {if (date == null) {return null;}SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);return sdf.format(date);}/** * 给一日期增加一时间 * @param timePart HH,mm,ss  * @param number 要增加的时间 * @param date 日期对象 * @return */public static Date addTime(String timePart, int number, Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);if (timePart.equals("HH")) {cal.add(Calendar.HOUR, number);}else if (timePart.equals("mm")) {cal.add(Calendar.MINUTE, number);}else if (timePart.equals("ss")) {cal.add(Calendar.SECOND, number);}else {throw new IllegalArgumentException("DateUtil.addDate()方法非法参数值:" + timePart);}return cal.getTime();}/** *  * 清除指定的时间 * @param date * @param timePart HH,mm,ss  * @return */public static Date clearTime(Date date,String timePart){Calendar cal = Calendar.getInstance();cal.setTime(date);if (timePart.equals("HH")) {cal.clear(Calendar.HOUR);}else if (timePart.equals("mm")) {cal.clear(Calendar.MINUTE);}else if (timePart.equals("ss")) {cal.clear(Calendar.SECOND);}else {throw new IllegalArgumentException("DateUtil.addDate()方法非法参数值:" + timePart);}return cal.getTime();}/** * 计算间隔时间 *   * @param currTime * @param lastestTime * @return String * @author:lipeng * @date:2013-4-27 */public static String getTimeSpace(String currTime,String lastestTime){Long d = convertStrToDate(currTime, TIME_FORMAT).getTime();Long d2 = convertStrToDate(lastestTime, TIME_FORMAT).getTime();return String.valueOf((d - d2)/1000);}/** * 比较时间大小 *   * @param a时间字符串 * @param b时间字符串 * @param timeFormat时间字符串格式 * @return inta > b 返回'-1',a = b 返回'0',a < b返回'1' * @author:lipeng * @date:Mar 27, 2014 */public static int compareTo(String a,String b,String timeFormat){long c = DateUtil.convertStrToDate(a, timeFormat).getTime();long d = DateUtil.convertStrToDate(b, timeFormat).getTime();if(c > d){return -1;}else if(c == d){return 0;}else{return 1;}}/** * 计算当前月的第一天 *   * @return String * @author: * @date:2013-4-27 */public static String getBeginTime(){SimpleDateFormat datef=new SimpleDateFormat(TIME_FORMAT);Calendar cal = Calendar.getInstance();        //当前月的第一天                  cal.set(GregorianCalendar.DAY_OF_MONTH, 1);         Date beginTime=cal.getTime();       return datef.format(beginTime);}/** * 计算当前月的最后一天 *   * @return String * @author: * @date:2013-4-27 */public static String getEndTime(){Calendar cal = Calendar.getInstance(); SimpleDateFormat datef=new SimpleDateFormat(TIME_FORMAT);     //当前月的最后一天        cal.set( Calendar.DATE, 1 );     cal.roll(Calendar.DATE, - 1 );     Date endTime=cal.getTime();     return datef.format(endTime);}/** * 计算某年某月的最后一天 *   * @return String * @author: * @date:2013-4-27 */    public static String getLastDayOfMonth(int year, int month) {             Calendar cal = Calendar.getInstance();             cal.set(Calendar.YEAR, year);             cal.set(Calendar.MONTH, month-1);             cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DATE));         return  new   SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime());      }     /** * 计算某年某月的第一天 *   * @return String * @author: * @date:2013-4-27 */    public static String getFirstDayOfMonth(int year, int month) {             Calendar cal = Calendar.getInstance();             cal.set(Calendar.YEAR, year);             cal.set(Calendar.MONTH, month-1);          cal.set(Calendar.DAY_OF_MONTH,cal.getMinimum(Calendar.DATE));         return   new   SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime());      }    /** * 判断输入是否为合法的日期格式 *   * @return String * @author: * @date:2013-4-27 */    public static boolean isDate(String str, String dateFormat) {        if (str != null) {          java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(dateFormat);          formatter.setLenient(false);                     try {                 formatter.format(formatter.parse(str));               }catch (Exception e) {                 return false;               }               return true;             }             return false;   }    /**     * 获取百度网站的北京时间     *       * @return      * @author:Administrator      * @date:2014年7月8日     */    public static long getTime() {        long time = 0;        String urls = "http://open.baidu.com/special/time/";        try {            URL url = new URL(urls);            HttpURLConnection con = (HttpURLConnection) url.openConnection();            con.connect();            InputStream is = con.getInputStream();            BufferedReader br = new BufferedReader(new InputStreamReader(is));            String line;            int index = 0;            while ((line = br.readLine()) != null) {                index++;                if (index < 123)                    continue;                if (line.indexOf("window.baidu_time(") != -1) {                    String[] s = line.split("\\(");                    time = Long.parseLong(s[1].substring(0, s[1].length() - 2));                    break;                }            }            con.disconnect();        } catch (Exception e) {            e.printStackTrace();        }        return time;    }        /**     * 获取某一日期前几月和后几月     *       * @param date     * @param amount     * @return      * @author:zhengjk      * @date:2014-12-4     */    public static Date addMonth(Date date, int amount){    Calendar c = Calendar.getInstance();    c.setTime(date);    c.add(Calendar.MONTH, amount);    return c.getTime();    }            public static String getCurrentMouth()    {     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd 00:00:00");     Calendar c = Calendar.getInstance();           c.add(Calendar.MONTH, 0);        c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天        String date = format.format(c.getTime());        return date;    }            /**     * 获取某一日期前几月和后几月     *       * @param date     * @param amount     * @return      * @author:lipeng     * @date:2015年1月26日     */    public static String cutMonth(Date date, int amount,String dateFormat){    return convertDateToStr(addMonth(date, amount),dateFormat);    }            public static String timeStamp2Date(String timestampString, String formats){          Long timestamp = Long.parseLong(timestampString)*1000;          String date = new java.text.SimpleDateFormat(formats).format(new java.util.Date(timestamp));          return date;        }     public static void main(String[] args){////上周一   Wed Jul 29 2015 15:25:23 GMT 0800//System.out.println(DateUtil.convertDateToStr(getWeekStar(-3), TIME_FORMAT));////上周日//System.out.println(DateUtil.convertDateToStr(getWeekEnd(-3), TIME_FORMAT));//      // 3.当前月的第一天  //        System.out.println("当前月的第一天:" + convertDateToStr(getMonthStar(35),TIME_FORMAT));  //        // 4.当前月的最后一天  //        System.out.println("当前月的最后一天:" + convertDateToStr(getMonthEnd(35),TIME_FORMAT));  //        System.out.println("获取前2天的时间:" + getLastesDayStr(-2));//        System.out.println(24*60*60*1000);//System.out.println(convertDateToStr(new Date(1437619600), TIME_FORMAT));//System.out.println(convertDateToStr(new Date(1437724064), TIME_FORMAT));System.out.println(timeStamp2Date("1437558729",TIME_FORMAT));/*Date d = convertStrToDate("2013-04-17 00:00:01", TIME_FORMAT);System.out.println(d.getTime());Date d2 = convertStrToDate("Wed Jul 29 2015 15:25:23 GMT+08:00", TIME_FORMAT);System.out.println(d2.getTime());*///System.out.println(d.getTime());//List<String> list = new ArrayList();//for (int i = 1; i < 5000; i++) {//list.add(convertDateToStr(new Date(1366190471000L - i*38*1000), TIME_FORMAT));//}//for (int i = 1; i < 8; i++) {//Date d = convertStrToDate("2013-06-" + i, TIME_FORMAT_DAY);//System.out.println((d.getTime() ));//}//System.out.println(getcurrentTime());//String time = DateUtil.convertDateToStr(DateUtil.addDate(-2),DateUtil.TIME_FORMAT_DAY);//System.out.println(time);//System.out.println(convertDateToStr(getWeekStar(2013,4,3),TIME_FORMAT_DAY));//System.out.println(convertDateToStr(getWeekEnd(2013,5,3),TIME_FORMAT_DAY));//System.out.println(convertDateToStr(getMonthStar(0),TIME_FORMAT_DAY));//System.out.println(getTimeSpace("2014-03-05 12:05:00","2014-03-05 12:01:00"));//System.out.println(getCurrentLastesStr(DateUtil.TIME_FORMAT));//System.out.println(convertDateToStr(new Date(1404787254578L),TIME_FORMAT));//System.out.println(convertDateToStr(addMonth(new Date(),2), "yyyyMM"));//System.out.println(convertDateToStr(addMonth(new Date(), -5),TIME_FORMAT_MONTH));//System.out.println(cutMonth(convertStrToDate("2015-03-18 16:56:00", DateUtil.TIME_FORMAT), -6,DateUtil.TIME_FORMAT));}}


0 0