297 lines
7.6 KiB
Java
297 lines
7.6 KiB
Java
package com.saye.hgddmz.commons.date;
|
||
|
||
import java.text.ParseException;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.Calendar;
|
||
import java.util.Date;
|
||
|
||
public class DateDUtil {
|
||
|
||
|
||
public static String yyyy_MM_dd = "yyyy-MM-dd";
|
||
public static String yyyyMMdd = "yyyyMMdd";
|
||
public static String yyyyMM = "yyyyMM";
|
||
public static String yyyy_MM = "yyyy-MM";
|
||
public static String yyyy_MM_dd_HH_00 = "yyyy-MM-dd HH:00";
|
||
public static String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
|
||
public static String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
|
||
public static String yyyy_MM_dd_HH_mm_ss_SS = "yyyy-MM-dd HH:mm:ss.SS";
|
||
public static String yyyyMMddHHmm = "yyyyMMddHHmm";
|
||
public static String yyyyMMddHHmmss = "yyyyMMddHHmmss";
|
||
public static String yyyyMMddHHmmssSS = "yyyyMMddHHmmssSS";
|
||
public static String yyMMdd = "yyMMdd";
|
||
public static String yyyy_MM_dd_00_00 = "yyyy-MM-dd 00:00";
|
||
|
||
/**
|
||
* 将字符串时间改成Date类型
|
||
* @param format
|
||
* @param dateStr
|
||
* @return
|
||
*/
|
||
public static Date strToDate(String format,String dateStr) {
|
||
|
||
Date date = null;
|
||
|
||
try {
|
||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
|
||
date = simpleDateFormat.parse(dateStr);
|
||
} catch (ParseException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
return date;
|
||
}
|
||
|
||
|
||
/**
|
||
* 将Date时间转成字符串
|
||
* @param format
|
||
* @param date
|
||
* @return
|
||
*/
|
||
public static String DateToStr(String format,Date date){
|
||
|
||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
|
||
|
||
return simpleDateFormat.format(date);
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 获取2个字符日期的天数差
|
||
* @param p_startDate
|
||
* @param p_endDate
|
||
* @return 天数差
|
||
*/
|
||
public static long getDaysOfTowDiffDate( String p_startDate, String p_endDate ){
|
||
|
||
Date l_startDate = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, p_startDate);
|
||
Date l_endDate = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, p_endDate);
|
||
long l_startTime = l_startDate.getTime();
|
||
long l_endTime = l_endDate.getTime();
|
||
long betweenDays = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60 * 60 * 24 ) );
|
||
return betweenDays;
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取2个字符日期的天数差
|
||
* @param l_startDate
|
||
* @param l_endDate
|
||
* @return 天数差
|
||
*/
|
||
public static long getDaysOfTowDiffDate( Date l_startDate, Date l_endDate ){
|
||
|
||
long l_startTime = l_startDate.getTime();
|
||
long l_endTime = l_endDate.getTime();
|
||
long betweenDays = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60 * 60 * 24 ) );
|
||
return betweenDays;
|
||
}
|
||
|
||
|
||
/**
|
||
* 给出日期添加一段时间后的日期
|
||
* @param dateStr
|
||
* @param plus
|
||
* @return
|
||
*/
|
||
public static String getPlusDays(String format,String dateStr,long plus){
|
||
|
||
Date date = DateDUtil.strToDate(format, dateStr);
|
||
|
||
long time = date.getTime()+ plus*24*60*60*1000;
|
||
|
||
|
||
return DateDUtil.DateToStr(format,new Date(time));
|
||
}
|
||
|
||
|
||
/**
|
||
* 给出日期添加一段时间后的日期
|
||
* @param format
|
||
* @param date
|
||
* @param plus
|
||
* @return
|
||
*/
|
||
public static String getPlusDays(String format,Date date,long plus){
|
||
|
||
|
||
long time = date.getTime()+ plus*24*60*60*1000;
|
||
|
||
|
||
return DateDUtil.DateToStr(format,new Date(time));
|
||
}
|
||
|
||
/**
|
||
* 给出日期添加一段时间前的日期
|
||
* @param format
|
||
* @param date
|
||
* @param forth
|
||
* @return
|
||
*/
|
||
public static String getForthDays(String format,Date date,long forth){
|
||
|
||
|
||
long time = date.getTime()- forth*24*60*60*1000;
|
||
|
||
|
||
return DateDUtil.DateToStr(format,new Date(time));
|
||
}
|
||
|
||
/**
|
||
* 给出时间添加几个小时后的时间
|
||
* @param format
|
||
* @param dateStr
|
||
* @param plus
|
||
* @return
|
||
*/
|
||
public static String getPlusHours(String format,String dateStr,long plus){
|
||
|
||
Date date = DateDUtil.strToDate(format, dateStr);
|
||
|
||
long time = date.getTime()+ plus*60*60*1000;
|
||
|
||
|
||
return DateDUtil.DateToStr(format,new Date(time));
|
||
}
|
||
|
||
/**
|
||
* 给出时间添加几个分钟后的时间
|
||
* @param format
|
||
* @param dateStr
|
||
* @param plus
|
||
* @return
|
||
*/
|
||
public static String getPlusMinutes(String format,String dateStr,long plus){
|
||
|
||
Date date = DateDUtil.strToDate(format, dateStr);
|
||
|
||
long time = date.getTime()+ plus*60*1000;
|
||
|
||
|
||
return DateDUtil.DateToStr(format,new Date(time));
|
||
}
|
||
|
||
/**
|
||
* 得到当前时间,格式如:yyyy-MM-dd HH:mm:ss:SS
|
||
* @return
|
||
*/
|
||
public static String getCurrentTime(){
|
||
|
||
String nowTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd_HH_mm_ss_SS, new Date());
|
||
return nowTime;
|
||
}
|
||
|
||
/**
|
||
* 得到当前时间,格式如:yyyy-MM-dd HH:mm:ss
|
||
* @return
|
||
*/
|
||
public static String getTheCurrentTime(){
|
||
|
||
String nowTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd_HH_mm_ss, new Date());
|
||
return nowTime;
|
||
}
|
||
|
||
/**
|
||
* 得到当前日期,格式如:yyyyMMdd
|
||
* @return
|
||
*/
|
||
public static String getCurrentDate(){
|
||
|
||
String nowDate = DateDUtil.DateToStr(DateDUtil.yyyyMMdd, new Date());
|
||
return nowDate;
|
||
}
|
||
|
||
/**
|
||
* 得到当前日期,格式如:yyyyMMdd
|
||
* @return
|
||
*/
|
||
public static String getCurrentDate(String format){
|
||
|
||
String nowDate = DateDUtil.DateToStr(format, new Date());
|
||
return nowDate;
|
||
}
|
||
|
||
/**
|
||
* 获取2个字符日期的分钟数差
|
||
* @param p_startDate
|
||
* @param p_endDate
|
||
* @return 相差的分钟
|
||
*/
|
||
public static long getMinutesOfTowDiffDate(String p_startDate, String p_endDate ){
|
||
|
||
Date l_startDate = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd_HH_mm_ss_SS, p_startDate);
|
||
Date l_endDate = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd_HH_mm_ss_SS, p_endDate);
|
||
long l_startTime = l_startDate.getTime();
|
||
long l_endTime = l_endDate.getTime();
|
||
long betweenMinutes = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60) );
|
||
return betweenMinutes;
|
||
}
|
||
|
||
/**
|
||
* 获取2个字符日期的分钟数差
|
||
* @param p_startDate
|
||
* @param p_endDate
|
||
* @return 相差的分钟
|
||
*/
|
||
public static long getMinutesOfTowDiffDateMin(String format,String p_startDate, String p_endDate ){
|
||
|
||
Date l_startDate = DateDUtil.strToDate(format, p_startDate);
|
||
Date l_endDate = DateDUtil.strToDate(format, p_endDate);
|
||
long l_startTime = l_startDate.getTime();
|
||
long l_endTime = l_endDate.getTime();
|
||
long betweenMinutes = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60) );
|
||
return betweenMinutes;
|
||
}
|
||
public static long getMonthIntervalOfTowDiffDate(String p_startMonth, String p_endMonth){
|
||
|
||
Date l_startDate = DateDUtil.strToDate(DateDUtil.yyyy_MM, p_startMonth);
|
||
Date l_endDate = DateDUtil.strToDate(DateDUtil.yyyy_MM, p_endMonth);
|
||
|
||
|
||
Calendar calender = Calendar.getInstance();
|
||
calender.setTime(l_startDate);
|
||
|
||
long l_startMonth = calender.get(Calendar.MONTH)+1;
|
||
long l_startYear = calender.get(Calendar.YEAR);
|
||
|
||
calender.setTime(l_endDate);
|
||
|
||
long l_endMonth =calender.get(Calendar.MONTH)+1;
|
||
long l_endYear = calender.get(Calendar.YEAR);
|
||
|
||
long betweenYear = l_endYear - l_startYear;
|
||
long betweenMonth = (long) ( l_endMonth - l_startMonth ) ;
|
||
|
||
return betweenYear * 12 + betweenMonth;
|
||
}
|
||
|
||
/**
|
||
* 将字符串日期转为cron表达式
|
||
*/
|
||
public static String getCron(String execute_time) throws Exception{
|
||
|
||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(yyyy_MM_dd_HH_mm_ss);
|
||
Date date = simpleDateFormat.parse(execute_time);
|
||
SimpleDateFormat dateFormat = new SimpleDateFormat("ss mm HH dd MM ? yyyy");
|
||
return dateFormat.format(date);
|
||
}
|
||
/**
|
||
* 获取当前年月日日期
|
||
*/
|
||
|
||
public static String getCDate(){
|
||
Calendar now = Calendar.getInstance();
|
||
String year=now.get(Calendar.YEAR)+"";
|
||
String month=(now.get(Calendar.MONTH) + 1) + "";
|
||
String day=now.get(Calendar.DAY_OF_MONTH)+"";
|
||
if ((now.get(Calendar.MONTH) + 1) < 10) month = "0" + month;
|
||
if (now.get(Calendar.DAY_OF_MONTH) < 10) day= "0" + day;
|
||
String nowDate = year+"年"+month+"月"+day+"日";
|
||
return nowDate;
|
||
}
|
||
|
||
|
||
}
|