DateUtil工具类2

/**
 * 2017年6月26日下午8:54:00
 */
package com.util;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
 *
 * @author huangtao
 * 2017年6月26日下午8:54:00
 * bkm
 * @parameter
 * TODO
 *
 */
public class DateUtil2 {
public static final String DATE_NORMAL_FORMAT = "yyyy-MM-dd";  
public static final String DATETIME_NORMAL_FORMAT = "yyyy-MM-dd HH:mm:ss";  
public static final String DATE_COMPACT_FORMAT = "yyyyMMdd";  
public static final String DATETIME_COMPACT_FORMAT = "yyyyMMddHHmmss"; 
    public static final String YM_NORMAL_FORMAT = "yyyy-MM";  
    public static final String YM_COMPACT_FORMAT = "yyyyMM";  
    /**
     * String转Timestamp
     * @param dateStr
     * @return
     * @author yup
     * 2015-1-17
     */
public static Timestamp stringToTimestamp(String dateStr) {
        try {  
        if(dateStr.length() <= 10) {
        dateStr += " 00:00:00";
        }
            return Timestamp.valueOf(dateStr);  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;
        } 
}
/**
* String转Date
* @param dateStr
* @param format
* @return
* @author yup
* 2015-1-17
*/
public static Date stringToDate(String dateStr, String format) {
if(dateStr == null || "".equals(dateStr)){
return null;
}
Date date = null;  
        //注意format的格式要与日期String的格式相匹配  
SimpleDateFormat sdf = new SimpleDateFormat(format);  
        try {  
            date = sdf.parse(dateStr);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } 
        return date;
}
 
    /**
     * Date转String
     * @param date
     * @param format
     * @return
     * @author yup
     * 2015-1-17
     */
    public static String dateToString(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String currentDate = sdf.format(date);
        return currentDate;
    }
    
    /**
     * Date转Timestamp
     * @param date
     * @return
     * @author yup
     * 2015-1-18
     */
    public static Timestamp dateToTimestamp(Date date) {
    Timestamp ts = new Timestamp(date.getTime());
        return ts;
    }
    
    /**
     * Timestamp转String
     * @param ts
     * @return
     * @author yup
     * 2015-1-17
     */
    public static String timestampToString(Timestamp ts) {
        String tsStr = null;  
        SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_NORMAL_FORMAT);  
        try {  
            tsStr = sdf.format(ts);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return tsStr;
    }
    
    /**
     * Timestamp转Date
     * @param ts
     * @return
     * @author yup
     * 2015-1-17
     */
    public static Date timestampToDate(Timestamp ts) {
        return ts;
    }
/**
     * 获得当前时间并格式化:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String getCurrentTimeNormal() {
    
    SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_NORMAL_FORMAT);
    String currentDate = sdf.format(new Date());
    return currentDate;
    }
    /**
     * 获得当前时间并格式化:yyyyMMddHHmmss
     * @return
     */
    public static String getCurrentTimeCompact() {

        SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_COMPACT_FORMAT);
        String currentDate = sdf.format(new Date());
        return currentDate;
    }
    
    /**
     * 获得当前时间并格式化:yyyy-MM-dd
     * @return
     */
    public static String getCurrentDateNormal() {

        SimpleDateFormat sdf = new SimpleDateFormat(DATE_NORMAL_FORMAT);
        String currentDate = sdf.format(new Date());
        return currentDate;
    }
    
    /**
     * 获得当前时间并格式化:yyyyMMdd
     * @return
     */
    public static String getCurrentDateCompact() {

        SimpleDateFormat sdf = new SimpleDateFormat(DATE_COMPACT_FORMAT);
        String currentDate = sdf.format(new Date());
        return currentDate;
    }
    
    /**
     * 将20101202时间格式化为2010-12-02
     * 
     * @param DateString 时间格式:yyyyMMdd
     * @return
     */
    public static String getDateCompactToNormal(String DateString){

        StringBuilder sb = new StringBuilder();
        sb.append(DateString.substring(0,4)).append("-").append(DateString.subSequence(4, 6)).append("-").append(DateString.substring(6, 8));
        return sb.toString();
    }
    
    /**
     * 将20101202101423时间格式化为2010-12-02 10:14:23
     * 
     * @param DateString 时间格式:yyyyMMddHHmmss
     * @return
     */
    public static String getDateTimeCompactToNormal(String DateString){

        StringBuilder sb = new StringBuilder();
        sb.append(DateString.substring(0,4)).append("-").append(DateString.subSequence(4, 6)).append("-").append(DateString.substring(6, 8))
                .append(" ").append(DateString.substring(8, 10)).append(":").append(DateString.substring(10, 12)).append(":").append(DateString.substring(12));
        return sb.toString();
    }
    
    /**
     * 把界面输入的时间转为间凑的时间字符串
     * 将2010-12-02 10:14:23时间格式化为20101202101423
     * @param dateNormalStr String
     * @return String
     */
    public static String getCompactString(String dateNormalStr) {
    StringBuffer ret = new StringBuffer();
    try {
    ret.append(dateNormalStr.substring(0, 4));
    ret.append(dateNormalStr.substring(5, 7));
    ret.append(dateNormalStr.substring(8, 10));
    ret.append(dateNormalStr.substring(11, 13));
    ret.append(dateNormalStr.substring(14, 16));
    ret.append(dateNormalStr.substring(17, 19));
    } catch (Exception ex) {
    // 如果字串不够长度,则返回前面的部分
    }
    return ret.toString();
    }
    /**
     * 将20101202(101423)时间格式  获得年份
     * @param DateString   时间格式:yyyyMMdd(HHmmss)
     * @return
     */
    public static String getYear(String DateString){

        return DateString.substring(0,4);
    }
    
    /**
     * 将20101202(101423)时间格式  获得月份
     * @param DateString   时间格式:yyyyMMdd(HHmmss)
     * @return
     */
    public static String getMonth(String DateString){

        return DateString.substring(4,6);
    }
    
    /**
     * 将20101202时间格式  获得日期
     * @param DateString   时间格式:yyyyMMdd
     * @return
     */
    public static String getDayNoTime(String DateString){
        return DateString.substring(6);
    }
    
   /**
    * 获取当前日期之前的日期,按天数向前推
    * @param numVal
    * @param dateFormat
    * @return
    * @author yup
    * 2015-1-17
    */
    public static String getBeforeDatePlusDay(int numVal, String dateFormat) {
        Calendar calendar = Calendar.getInstance();
        long currentTimeMillis = calendar.getTimeInMillis();

        long hourInMillis = 60 * 60 * 1000;
        long dVal = numVal * 24 * hourInMillis;

        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        String currentDate = sdf.format(currentTimeMillis - dVal);
        return currentDate;
    }
    
    /**
     * 获取当前日期之前的日期,按天数向前推
     * @param numVal
     * @param dateFormat
     * @return
     * @author yup
     * 2015-1-17
     */
    public static String getAfterDatePlusDay(int numVal, String dateFormat) {
    Calendar calendar = Calendar.getInstance();
    long currentTimeMillis = calendar.getTimeInMillis();
    
    long hourInMillis = 60 * 60 * 1000;
    long dVal = numVal * 24 * hourInMillis;
    
    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
    String currentDate = sdf.format(currentTimeMillis + dVal);
    return currentDate;
    }
    
    /**
     * 获取当前日期之前的日期,按小时向前推
     * @param numVal
     * @param dateFormat
     * @return
     * @author yup
     * 2015-1-17
     */
    public static String getBeforeDatePlusHour(int numVal, String dateFormat) {
        Calendar calendar = Calendar.getInstance();
        long currentTimeMillis = calendar.getTimeInMillis();

        long hourInMillis = 60 * 60 * 1000;
        long dVal = numVal * hourInMillis;

        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        String currentDate = sdf.format(currentTimeMillis - dVal);
        return currentDate;
    }
    
    /**
     * 获取当前日期之前的日期,按小时向前推
     * @param numVal
     * @param dateFormat
     * @return
     * @author yup
     * 2015-1-17
     */
    public static String getAfterDatePlusHour(int numVal, String dateFormat) {
        Calendar calendar = Calendar.getInstance();
        long currentTimeMillis = calendar.getTimeInMillis();

        long hourInMillis = 60 * 60 * 1000;
        long dVal = numVal * hourInMillis;

        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        String currentDate = sdf.format(currentTimeMillis + dVal);
        return currentDate;
    }
    
    /**
     * 两个日期相差天数
     * @param beginDate
     * @param endDate
     * @return
     * @author yup
     * 2015-1-18
     */
public static int daysBetween(Date beginDate, Date endDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(beginDate);
long time1 = cal.getTimeInMillis();
cal.setTime(endDate);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
* 获取某月天数
* @param year
* @param month
* @return
* @author yup
* 2015-1-18
*/
public static int getMonthdays(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
return cal.getActualMaximum(Calendar.DATE);
}

    /**
     * 给时间加减年份
     * @param date
     * @param plusTime
     * @return
     * @author yup
     * 2015-1-17
     */
    public static Date getDatePlusYear(Date date, int plusTime) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.YEAR, plusTime);
    Date d = cal.getTime();
    return d;
    }
    
    /**
     * 给时间加减月份
     * @param date
     * @param plusTime
     * @return
     * @author yup
     * 2015-1-17
     */
    public static Date getDatePlusMonth(Date date, int plusTime) {
    Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, plusTime);
Date d = cal.getTime();
return d;
    }

    /**
     * 给时间加减天数
     * @param date
     * @param plusTime
     * @return
     * @author yup
     * 2015-1-17
     */
    public static Date getDatePlusDay(Date date, int plusTime) {
    Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, plusTime);
Date d = cal.getTime();
return d;
    }
   
    /**
     * 给时间加减小时
     * @param date
     * @param plusTime
     * @return
     * @author yup
     * 2015-1-17
     */
    public static Date getDatePlusHour(Date date, int plusTime) {
    Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, plusTime);
Date d = cal.getTime();
return d;
    }
    
    /**
     * 给时间加减分钟
     * @param date
     * @param plusTime
     * @return
     * @author yup
     * 2015-1-17
     */
    public static Date getDatePlusMinute(Date date, int plusTime) {
    Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, plusTime);
Date d = cal.getTime();
return d;
    }
    
    /**
     * 给时间加减秒
     * @param date
     * @param plusTime
     * @return
     * @author yup
     * 2015-1-17
     */
    public static Date getDatePlusSecond(Date date, int plusTime) {
    Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.SECOND, plusTime);
Date d = cal.getTime();
return d;
    }
    
/**
* 返回当前年
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentYear() {
Calendar calendar = Calendar.getInstance();
return calendar.get(1);
}

/**
* 返回当前月
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentMonth() {
Calendar calendar = Calendar.getInstance();
return calendar.get(2) + 1;
}

/**
* 返回当前天
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentDay() {
Calendar calendar = Calendar.getInstance();
return calendar.get(5);
}

/**
* 返回当前小时
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentHour() {
Calendar calendar = Calendar.getInstance();
return calendar.get(11);
}

/**
* 返回当前分钟
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentMinute() {
Calendar calendar = Calendar.getInstance();
return calendar.get(12);
}

/**
* 返回当前秒
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentSecond() {
Calendar calendar = Calendar.getInstance();
return calendar.get(13);
}
/**
* 返回当前年
* @return
* @author yup
* 2015-1-17
*/
public static int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(1);
}

/**
* 返回当前月
* @return
* @author yup
* 2015-1-17
*/
public static int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(2) + 1;
}

/**
* 返回当前天
* @return
* @author yup
* 2015-1-17
*/
public static int getDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(5);
}

/**
* 返回当前小时
* @return
* @author yup
* 2015-1-17
*/
public static int getHour(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(11);
}

/**
* 返回当前分钟
* @return
* @author yup
* 2015-1-17
*/
public static int getMinute(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(12);
}

/**
* 返回当前秒
* @return
* @author yup
* 2015-1-17
*/
public static int getSecond(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(13);
}
/**
* 
* 毫秒数转化成时分秒
* 
* 2017年6月28日下午9:52:04
* @param time
* @return
* @parameter
* String
*
*/
public static String converLongTimeToStr(long time) {
         int ss = 1000;
         int mi = ss * 60;
         int hh = mi * 60;
  
         long hour = (time) / hh;
         long minute = (time - hour * hh) / mi;
         long second = (time - hour * hh - minute * mi) / ss;
  
         String strHour = hour < 10 ? "0" + hour : "" + hour;
         String strMinute = minute < 10 ? "0" + minute : "" + minute;
         String strSecond = second < 10 ? "0" + second : "" + second;
         if (hour > 0) {
             return strHour + ":" + strMinute + ":" + strSecond;
         } else {
             return strMinute + ":" + strSecond;
         }
     }
 
/**
 * 两个时间相加减,返回相差的天数
 * 
 * 2017年7月13日下午9:52:58
 * @param date1
 * @param date2
 * @return
 * @parameter
 * long
 *
 */
public static long addDay(String date1,String date2){
 
if(date2.indexOf("/")!=-1){
date2 = date2.replace(" ", "/");
String[] ss = date2.split("/");
date2 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3]; 
}
if(date1.indexOf("/")!=-1){
date1 = date1.replace(" ", "/");
String[] ss = date1.split("/");
date1 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3]; 
}  
 
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
long day = 0; 
try {
long day1 = format.parse(date1).getTime();
long day2 = format.parse(date2).getTime();
day = (day1 - day2) / (1000 * 60 * 60 * 24);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return day;
}
 
/**
 * 
 * 2017年7月18日下午11:03:10
 * @param date1  时间参数 1:
 * @param date2  时间参数 2:
 * @return 相差天数
 * @parameter
 * long
      * 两个时间之间相差距离多少天
 */
public static long[] addDayTime(String date1,String date2){
 
if(date2.indexOf("/")!=-1){
date2 = date2.replace(" ", "/");
String[] ss = date2.split("/");
date2 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3]; 
}
if(date1.indexOf("/")!=-1){
date1 = date1.replace(" ", "/");
String[] ss = date1.split("/");
date1 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3]; 
} 
 
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       Date one;
       Date two;
       long day = 0;
       long hour = 0;
       long min = 0;
       long sec = 0;
       try {
           one = df.parse(date1);
           two = df.parse(date2);
           long time1 = one.getTime();
           long time2 = two.getTime();
           long diff ;
           if(time1<time2) {
               diff = time2 - time1;
           } else {
               diff = time1 - time2;
           }
           day = diff / (24 * 60 * 60 * 1000);
           hour = (diff / (60 * 60 * 1000) - day * 24);
           min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
           sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
       } catch (ParseException e) {
           e.printStackTrace();
       }
       long[] times = {day, hour, min, sec};
       return times;
}
 
 
   /**
    * 两个时间相差距离多少天多少小时多少分多少秒
    * @param str1 时间参数 1 格式:1990-01-01 12:00:00
    * @param str2 时间参数 2 格式:2009-01-01 12:00:00
    * @return String 返回值为:xx天xx小时xx分xx秒
    */
   public static String getDistanceTime(String str1, String str2) {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       Date one;
       Date two;
       long day = 0;
       long hour = 0;
       long min = 0;
       long sec = 0;
       try {
           one = df.parse(str1);
           two = df.parse(str2);
           long time1 = one.getTime();
           long time2 = two.getTime();
           long diff ;
           if(time1<time2) {
               diff = time2 - time1;
           } else {
               diff = time1 - time2;
           }
           day = diff / (24 * 60 * 60 * 1000);
           hour = (diff / (60 * 60 * 1000) - day * 24);
           min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
           sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
       } catch (ParseException e) {
           e.printStackTrace();
       }
       return day + "天" + hour + "小时" + min + "分" + sec + "秒";
   }
   
   /**
    * 格式化时间 把   月/日/年   时:分:秒.000 格式化为yyyy-MM-dd hh:MM:ss.sss
    * 
    * 2017年7月19日上午1:19:20
    * @param time
    * @return
    * @parameter
    * String
    *
    */
   public static String getFomatTime(String time){
if(time.indexOf("/")!=-1){
time = time.replace(" ", "/");
String[] ss = time.split("/");
time = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3]; 
}  
    return time;
   }
 
public static void main(String[] args) {
/* String s = getCurrentTimeNormal();
long a = addDay(s,"2017-07-13 11:56:37.523");
System.out.println(a);*/
 
String ss = "13/14/2017 11:23:34.194000";
String sss = getFomatTime(ss);
int i = sss.indexOf(" ");
String snew= sss.substring(i+1);
String snews= sss.substring(0,i);
System.out.println("---"+snews+"---");
System.out.println("---"+snew+"---");
 
}
}
posted @ 2017-10-29 20:52  me-ht  阅读(199)  评论(0编辑  收藏  举报