package com.knowledge.system.dateutil;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @program: zhs-pom
* @description: 时间日期工具类
* @author: bo.hu
* @create: 2019-08-01 15:14
**/
public class DateUtilByHb {
/** 日期字符串格式 "yyyyMM" */
public final static String DATE_YYYYMM = "yyyyMM";
/** 日期字符串格式 "yyyyMMdd" */
public final static String DATE_YYYYMMDD = "yyyyMMdd";
/** 日期字符串格式 "yyyy-MM-dd HH:mm:ss" */
public final static String DATE_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
/** 日期字符串格式 "yyyy-MM-dd HH:mm" */
public final static String DATE_YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
/** 日期字符串格式 "yyyy-MM-dd HH" */
public final static String DATE_YYYY_MM_DD_HH = "yyyy-MM-dd HH";
/** 日期字符串格式 "yyyy-MM-dd" */
public final static String DATE_YYYY_MM_DD = "yyyy-MM-dd";
/** 日期字符串格式 "yyyy-MM" */
public final static String DATE_YYYY_MM = "yyyy-MM";
/** 日期字符串格式 "yyyy" */
public final static String DATE_YYYY= "yyyy";
/** 日期字符串格式 "MM" --月*/
public final static String DATE_MM= "MM";
/** 日期字符串格式 "dd" */
public final static String DATE_dd= "dd";
/** 日期字符串格式 "HH" */
public final static String DATE_HH= "HH";
/** 日期字符串格式 "mm" --分*/
public final static String DATE_mm= "mm";
/** 日期字符串格式 "ss" --分*/
public final static String DATE_ss= "ss";
/** 获取年*/
public final static int Year=0;
/** 获取月*/
public final static int Month=1;
/** 获取日*/
public final static int Day=2;
/** 获取时 12小时制*/
public final static int Hour12=4;
/** 获取时 24小时制*/
public final static int Hour24=5;
/** 获取分*/
public final static int Min=6;
/** 获取秒*/
public final static int Sec=7;
/** 一个月中第几周*/
public final static int WEEK_OF_MONTH=8;
/** 一年中第几周*/
public final static int WEEK_OF_YEAR=9;
/** 星期几,从周日开始*/
public final static int DAY_OF_WEEK=10;
/** 一月中第几天*/
public final static int DAY_OF_MONTH=11;
/** 一年中第几天*/
public final static int DAY_OF_YEAR=12;
/**
* @Description: 获取系统当前日期
* @Param: []
* @return: java.util.Date
* @Author: bo.hu
* @Date: 2019/8/15
*/
public static Date now(){
return new Date(System.currentTimeMillis());
}
/**
* @Description: 给定日期date,以pattern格式返回before天前日期的字符串 前:before为负数,后:before为正,【日期--》字符串】,flag=0日加减,flag=1月加减
* @Param: [date, pattern, before]
* @return: java.lang.String
* @Author: bo.hu
* @Date: 2019/8/15
*/
public static String dateToStrFormat(Date date,String pattern,int before ,int flag){
if(date==null){
return null;
}
Calendar c = Calendar.getInstance();
c.setTime(date);
/*日加减*/
if(flag==0){
c.add(Calendar.DAY_OF_YEAR,before);
}
/*月加减*/
if(flag==1){
c.add(Calendar.MONTH,before);
}
return new SimpleDateFormat(pattern).format(c.getTime());
}
/**
* @Description: 获取date日期的年、月、日、时、分、秒
* @Param: [date]
* @return: int
* @Author: bo.hu
* @Date: 2019/8/15
*/
public static int getData(Date date,int flag){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int result = 0;
switch(flag){
case 0: result=calendar.get(Calendar.YEAR);break;
case 1: result=calendar.get(Calendar.MONTH)+1;break;
case 2: result=calendar.get(Calendar.DATE);break;
case 4: result=calendar.get(Calendar.HOUR);break;
case 5: result=calendar.get(Calendar.HOUR_OF_DAY);break;
case 6: result=calendar.get(Calendar.MINUTE);break;
case 7: result=calendar.get(Calendar.SECOND);break;
case 8: result=calendar.get(Calendar.WEEK_OF_MONTH);break;
case 9: result=calendar.get(Calendar.WEEK_OF_YEAR);break;
case 10: result=calendar.get(Calendar.DAY_OF_WEEK);break;
case 11: result=calendar.get(Calendar.DAY_OF_MONTH);break;
case 12: result=calendar.get(Calendar.DAY_OF_YEAR);break;
}
return result;
}
/**
* @Description: 将日期字符串dateStr转换成pattern格式的日期【字符串--》日期】
* @Param: [dateStr, pattern]
* @return: java.util.Date
* @Author: bo.hu
* @Date: 2019/8/15
*/
public static Date strToDateFormat(String dateStr,String pattern){
Date date= null;
try {
date = new SimpleDateFormat(pattern).parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* @Description: 计算两个dateStr相差的天数【日期字符串计算】
* @Param: [startDateStr, endDateStr, pattern]
* @return: int
* @Author: bo.hu
* @Date: 2019/8/15
*/
public static int twoDateStrsBetween(String startDateStr,String endDateStr,String pattern){
SimpleDateFormat sdf=new SimpleDateFormat(pattern);
Date start= null;
Date end= null;
try {
start = sdf.parse(startDateStr);
end = sdf.parse(endDateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return twoDatesBetween(start,end);
}
/**
* @Description: 计算两个date时间相差的天数【日期直接计算】
* @Param: [start, end]
* @return: int
* @Author: bo.hu
* @Date: 2019/8/15
*/
public static int twoDatesBetween(Date start,Date end){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
start=sdf.parse(sdf.format(start));
end=sdf.parse(sdf.format(end));
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar=Calendar.getInstance();
calendar.setTime(start);
long startTimeInMillis=calendar.getTimeInMillis();
calendar.setTime(end);
long endTimeInMillis=calendar.getTimeInMillis();
long between=(endTimeInMillis-startTimeInMillis)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between));
}
}