前言
备份一下:
代码实现:
public class DateUtil {
public static String getTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(date);
return time;
}
/**
* 获取传入时间的yyyy-MM-dd HH格式时间
* @param date
* @return
*/
public static String getYMDHTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
String time = sdf.format(date);
return time;
}
public static Date getDateByYMDHMS(String ymdhms) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return sd.parse(ymdhms);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String getCurrentMonthFirstDay(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String time = sdf.format(date)+"-01";
return time;
}
/**
* 前几天日期封装
* @param sdate
* @param days
* @return
*/
public static Map<String, ParamDto> getPastDays(Date sdate, int days) {
Map<String, ParamDto> returnMap = new LinkedHashMap<>();
String key = "day_";
int num = 1;
for(int i=days-1;i>=0;i--) {
Date calcTime = calcTime(sdate, -i);
ParamDto param = new ParamDto();
String param1 = getYMD(calcTime);
param.setParam1(param1);
int week = getDayOfWeek(param1);
String param2 = "";
if(week==1) {
param2 = "星期日";
}else if(week==2) {
param2 = "星期一";
}else if(week==3) {
param2 = "星期二";
}else if(week==4) {
param2 = "星期三";
}else if(week==5) {
param2 = "星期四";
}else if(week==6) {
param2 = "星期五";
}else if(week==7) {
param2 = "星期六";
}
param.setParam2(param2);
returnMap.put(key+num, param);
num++;
}
return returnMap;
}
/**
* 前几周日期封装
* @param sdate
* @param weeks
* @return
*/
public static Map<String,ParamDto> getPastWeeks(Date sdate, int weeks) {
Map<String, ParamDto> returnMap = new LinkedHashMap<>();
String key = "week_";
int num = 1;
for(int i=weeks;i>0;i--) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(sdate);
calendar.add(GregorianCalendar.WEEK_OF_YEAR, -i);
Date calcTime = calendar.getTime();
ParamDto param = new ParamDto();
String param1 = getYMD(calcTime);
param.setParam1(param1);
Date calcWeek = calcTime(calcTime, 6);
String param2 = getYMD(calcWeek);
param.setParam2(param2);
returnMap.put(key+num, param);
num++;
}
return returnMap;
}
/**
* 上周本周下周三周日期控件接口
* @param sdate
* @return
*/
public static Map<String,List<String>> getthreeWeeks(Date sdate) {
Map<String, List<String>> returnMap = new LinkedHashMap<>();
String key = "week_";
int num = 1;
for(int i=-1;i<2;i++) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(sdate);
calendar.add(GregorianCalendar.WEEK_OF_YEAR, i);
Date calcTime = calendar.getTime();
List<String> list = new ArrayList<>();
for(int j=0;j<7;j++) {
Date calcWeek = calcTime(calcTime, j);
String param = getYMD(calcWeek);
list.add(param);
}
returnMap.put(key+num, list);
num++;
}
return returnMap;
}
public static String getYMD(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(date);
return time;
}
/**
*@param date 是为则默认今天日期、可自行设置“2013-06-03”格式的日期
*@return 返回1是星期日、2是星期一、3是星期二、4是星期三、5是星期四、6是星期五、7是星期六
*/
public static int getDayOfWeek(String date){
Calendar cal = Calendar.getInstance();
if (date.equals("")) {
cal.setTime(new Date(System.currentTimeMillis()));
}else {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
try {
cal.setTime(new Date(sd.parse(date).getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
}
return cal.get(Calendar.DAY_OF_WEEK);
}
public static Date calcTime(Date sdate,int days) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(sdate);
calendar.add(GregorianCalendar.DAY_OF_MONTH, days);
Date calcTime = calendar.getTime();
return calcTime;
}
public static Date getDutyDateTime(String sdate,int stime) {
try {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date date = sd.parse(sdate);
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(GregorianCalendar.HOUR_OF_DAY, stime);
Date calcTime = calendar.getTime();
return calcTime;
} catch (ParseException e) {
e.printStackTrace();
}
return new Date();
}
public static Date getThisWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
return cal.getTime();
}
public static String getyyyyMMddHHmmss(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String time = sdf.format(date);
return time;
}
public static ParamDto getWeekStartAndEnd(Date date) {
ParamDto param = new ParamDto();
Date monday = getThisWeekMonday(date);
param.setParam1(getYMD(monday));
Date sunday = calcTime(monday, 6);
param.setParam2(getYMD(sunday));
return param;
}
public static String getMd(String date) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(sd.parse(date).getTime()));
Date dateTime = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("M月d日");
String time = sdf.format(dateTime);
return time;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String addDateByHour(Date sdate,int hour) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(sdate);
calendar.add(GregorianCalendar.HOUR_OF_DAY, hour);
Date calcTime = calendar.getTime();
return getTime(calcTime);
}
/**
* 计算两个日期之间相差的天数
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差天数
* @throws ParseException
*/
public static int getDaysBetween(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));
}
/**
*
* @param time 把时间戳转成字符串
* @return 返回 字符串时间:"3天12小时"
*/
public static String getStrTimeByLongTime(long time){
long day = 0;
long hour = 0;
day = time / (24 * 60 * 60 * 1000);
hour = (time / (60 * 60 * 1000) - day * 24);
String tempTime="";
if(day ==0 && hour !=0){
tempTime=hour+"小时";
}
if(day !=0 && hour ==0){
tempTime=day+"天";
}
if(day!=0 && hour !=0){
tempTime=day+"天"+hour+"小时";
}
return tempTime;
}
/**
* 获取本周的第一天
* @return String
* **/
public static String getWeekStart(){
Calendar cal=Calendar.getInstance();
cal.add(Calendar.WEEK_OF_MONTH, 0);
cal.set(Calendar.DAY_OF_WEEK, 2);
Date time=cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time)+" 00:00:00";
}
/**
* 获取本月开始日期
* @return String
* **/
public static String getMonthStart(){
Calendar cal=Calendar.getInstance();
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date time=cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time)+" 00:00:00";
}