java Date时间格式工具类DateUtil

原文连接--原文格式不太对 丢失了很多空格

java 复制代码
import java.text.ParseException;

import java.text.ParsePosition;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import org.apache.commons.lang.time.DateFormatUtils;

/**

* 所有注释以2018-05-03日期为准

*/

public class DateUtils{

public static final String ymdhms="yyyy-MM-dd HH:mm:ss";

public static final String ymd="yyyy-MM-dd";

public static final String yymmdd="yy-MM-dd";

public static final String md="MM-dd";

public static final String ymdhm="yyyy-MM-dd HH:mm";

public static final String mdhm="MM-dd HH:mm";

private DateUtil() {

}

/**

* 获得年月日  格式:2018-05-03

*@paramdate

*@return

*/

public static String getYmd(Date date) {

returndate ==null?"":DateFormatUtils.format(date,"yyyy-MM-dd");

}

/**

* 获得年月日  格式:18-05-03

*@paramdate

*@return

*/

public static String getYymmdd(Date date) {

returndate ==null?"":DateFormatUtils.format(date,"yy-MM-dd");

}

/**

* 获得月日  格式:05-03

*@paramdate

*@return

*/

public static String getMd(Date date) {

returndate ==null?"":DateFormatUtils.format(date,"MM-dd");

}

/**

* 获得年月日 时分秒  格式:2018-05-03 14:32:36

*@paramdate

*@return

*/

public static String getYmhmsd(Date date) {

returndate ==null?"":DateFormatUtils.format(date,"yyyy-MM-dd HH:mm:ss");

}

/**

* 获得年月日 时分  格式:2018-05-03 14:32

*@paramdate

*@return

*/

public static String getYmdhm(Date date) {

returndate ==null?"":DateFormatUtils.format(date,"yyyy-MM-dd HH:mm");

}

/**

* 获得月日 时分  格式:05-03 14:32

*@paramdate

*@return

*/

public static String getMdhm(Date date) {

returndate ==null?"":DateFormatUtils.format(date,"MM-dd HH:mm");

}

/**

* 转换yyyy-MM-dd格式的字符串成Date格式

*@paramdate

*@return

*/

public static Date parseYmd(String date) {

SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd");

ParsePosition pos=newParsePosition();

returnformat.parse(date,pos);

}

/**

* 转换yyyy-MM-dd HH:mm格式的字符串成Date格式

*@paramdate

*@return

*/

public static Date parseYmdhm(String date) {

SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd HH:mm");

ParsePosition pos=newParsePosition();

returnformat.parse(date,pos);

}

/**

* 转换MM-dd HH:mm格式的字符串成Date格式

*@paramdate

*@return

*/

public static Date parsemdhm(String date) {

SimpleDateFormat format=newSimpleDateFormat("MM-dd HH:mm");

ParsePosition pos=newParsePosition();

returnformat.parse(date,pos);

}

/**

* 转换yyyy-MM-dd HH:mm:ss格式的字符串成Date格式

*@paramdate

*@return

*/

public static Date parseYmdhms(String date) {

SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

ParsePosition pos=newParsePosition();

returnformat.parse(date,pos);

}

/**

* 格式化Date类型为格式yyyy-MM-dd HH:mm:ss的字符串

*@paramdate

*@return

*/

public static String  format(Date date) {

try{

returnDateFormatUtils.format(date,"yyyy-MM-dd HH:mm:ss");

}catch(Exceptionvar2) {

return null;

}

}

/**

* 格式化Date类型为pattern格式的字符串

*@paramdate

*@return

*/

public static String format(Date date,String pattern) {

try{

returnDateFormatUtils.format(date,pattern);

}catch(Exceptionvar3) {

return null;

}

}

/**

*  指定格式的字符串日期进行累加年月日  例如:GetSysDate("yyyy-MM-dd","1990-01-01",1,2,3) 结果为  1991-03-04

*@paramformatStrDate的字符串是什么格式

*@paramStrDate时间字符串

*@paramyear年

*@parammonth月

*@paramday日

*@return

*/

public static String GetSysDate(String format,String StrDate,int year,int month,int day) {

Calendar cal=Calendar.getInstance();

SimpleDateFormat sFmt=newSimpleDateFormat(format);

cal.setTime(sFmt.parse(StrDate,newParsePosition()));

if(day !=) {

cal.add(5,day);

}

if(month !=) {

cal.add(2,month);

}

if(year !=) {

cal.add(1,year);

}

returnsFmt.format(cal.getTime());

}

/**

* 获得两个时间字符串之间的天数差  时间字符串的格式为yyyy-MM-dd

*@parambegin

*@paramend

*@return

*/

public static long getInterval(String begin,String end) {

try{

Date e=parse(begin,"yyyy-MM-dd");

Date endTime=parse(end,"yyyy-MM-dd");

longday=0L;

day= (e.getTime() -endTime.getTime()) /86400000L;

returnday;

}catch(Exceptionvar6) {

throw newRuntimeException(var6);

}

}

/**

* 获得两个时间之间的天数差

*@parambeginTime

*@paramendTime

*@return

*/

public static long getInterval(Date beginTime,Date endTime) {

try{

longe=0L;

e= (beginTime.getTime() - endTime.getTime()) /86400000L;

returne;

}catch(Exceptionvar4) {

throw newRuntimeException(var4);

}

}

/**

* 根据秒进行相加差值并返回  比如  System.out.println(DateUtil.getDelay("2018-05-03",86400,"yyyy-MM-dd",2)); 结果:2018-05-05

*@paramnow

*@paramdelay

*@parampattern

*@paramtime

*@return

*/

public static String getDelay(String now,Integer delay,String pattern,Integer time) {

String delayDate=null;

try{

Date e=parse(now,pattern);

longdelayTime=e.getTime() /1000L+ (long)(delay.intValue() * time.intValue());

e.setTime(delayTime*1000L);

delayDate=DateFormatUtils.format(e,pattern);

returndelayDate;

}catch(Exceptionvar8) {

return null;

}

}

/**

* 获得上一个月的第一天    例如:DateUtil.getPreMonthFirst("2018-05-03","yyyy-MM-dd")  结果:2018-04-01

*@paramnow

*@parampattern

*@return

*/

public static String getPreMonthFirst(String now,String pattern) {

Calendar c=Calendar.getInstance();

c.setTime(parse(now,pattern));

c.set(5,1);

c.add(2,-1);

returnDateFormatUtils.format(c,"yyyy-MM-dd");

}

/**

* 给目标时间添加天数  例如:DateUtil.getDelayDay("2018-05-03 15:01",5,"yyyy-MM-dd HH:mm")  结果:2018-05-08 15:01

*@paramnow

*@paramdelay

*@parampattern

*@return

*/

public static String getDelayDay(String now,Integer delay,String pattern) {

returngetDelay(now,delay,pattern,Integer.valueOf(86400));

}

/**

* 给目标时间添加小时数  例如:DateUtil.getDelayHour("2018-05-03 15:01",5,"yyyy-MM-dd HH:mm") 结果:2018-05-03 20:01

*@paramnow

*@paramdelay

*@parampattern

*@return

*/

public static String getDelayHour(String now,Integer delay,String pattern) {

returngetDelay(now,delay,pattern,Integer.valueOf(3600));

}

/**

* 给目标时间添加分钟数  例如:DateUtil.getDelayMinute("2018-05-03 15:01",5,"yyyy-MM-dd HH:mm")  结果:2018-05-03 15:06

*@paramnow

*@paramdelay

*@parampattern

*@return

*/

public static String getDelayMinute(String now,Integer delay,String pattern) {

returngetDelay(now,delay,pattern,Integer.valueOf(60));

}

/**

* 根据pattern的格式来格式化date

*@paramdate

*@parampattern

*@return

*/

public static Date parse(String date,String pattern) {

SimpleDateFormat format=newSimpleDateFormat(pattern);

ParsePosition pos=newParsePosition();

returnformat.parse(date,pos);

}

/**

* 格式化Date为yyyy-MM-dd

*@paramdate

*@return

*/

public static Date parse(String date) {

SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd");

ParsePosition pos=newParsePosition();

returnformat.parse(date,pos);

}

/**

* 获得今天星期几  例如:DateUtil.getWeek(new Date())   结果:星期四

*@paramdate

*@return

*/

public static String getWeek(Date date) {

Calendar c=Calendar.getInstance();

c.setTime(date);

returnDateFormatUtils.format(c,"EEEE");

}

/**

* 格式为yyyy-MM-dd的时间字符串添加天数  例如:DateUtil.getAddCountDay(1,"2018-05-03") 结果:2018-05-04

*@paramcount

*@paramday

*@return

*/

public static String getAddCountDay(int count,String day) {

SimpleDateFormat simpleDate2=newSimpleDateFormat("yyyy-MM-dd");

simpleDate2.setLenient(false);

try{

Date myDate=simpleDate2.parse(day);

Long e=Long.valueOf(myDate.getTime() /1000L+ (long)(86400* count));

myDate.setTime(e.longValue() *1000L);

returnsimpleDate2.format(myDate);

}catch(ParseExceptionvar5) {

returnday;

}

}

/**

* 时间添加天数  例如:DateUtil.getAddCountDay(1,new Date()) 结果:Fri May 04 15:06:55 CST 2018

*@paramcount

*@paramdate

*@return

*/

public static Date getAddCountDay(int count,Date date) {

Long myTime=Long.valueOf(date.getTime() /1000L+ (long)(86400* count));

date.setTime(myTime.longValue() *1000L);

returndate;

}

/**

* 对比两个时间的时间差  例如:DateUtil.contrastStringDate("2018-05-03","2018-05-04")  结果:1

*@paramdate1

*@paramdate2

*@return

*/

public static int contrastStringDate(String date1,String date2) {

intday=;

SimpleDateFormat sf=newSimpleDateFormat("yyyy-MM-dd");

newGregorianCalendar();

newGregorianCalendar();

newDate();

newDate();

try{

Date xxx1=sf.parse(date1);

Date xxx2=sf.parse(date2);

day= (int)((xxx2.getTime() -xxx1.getTime()) /3600L/24L/1000L);

}catch(ParseExceptionvar9) {

}

returnday;

}

/**

* 计算两个时间点的分钟差值

*@paramstart

*@paramend

*@return

*/

public static long hasMinute(Date start,Date end) {

try{

System.out.println(start +"======="+ end);

longe= end.getTime() - start.getTime();

System.out.println(end.getTime() +"========"+ start.getTime());

e/=60000L;

returne;

}catch(Exceptionvar4) {

return0L;

}

}

/**

* 获得这个月最后一天的日期   例如:DateUtil.getLastDayOfMonth("2018-05-03")  结果:2018-05-31

*@paramdate

*@return

*/

public static String getLastDayOfMonth(String date) {

String[]ss= date.split("-");

Calendar cal=Calendar.getInstance();

cal.set(1,Integer.valueOf(ss[]).intValue());

cal.set(2,Integer.valueOf(ss[1]).intValue() -1);

intmaxDay=cal.getActualMaximum(5);

returnss[] +"-"+ss[1] +"-"+maxDay;

}

/**

* 不知道这是啥玩意  有待研究  哈哈哈

*@paramyear

*@paramweek

*@parammonth

*@return

*/

public static String getDateByWeek(int year,int week,int month) {

String ret="";

Calendar c=Calendar.getInstance();

c.set(year,,1);

intday_week=c.get(7);//星期几

c.add(5,7* week - (day_week-1));//添加这么多天

System.out.println(c.get(2));//第几月

System.out.println(c.get(7));//星期几

System.out.println(c.get(5));//日期

if(month -c.get(2) !=1) {

ret=ret+"1-";

c.add(5,6);

ret=ret+c.get(5);

}else{

intsun_week=c.get(5);

ret=ret+sun_week+"-";

c.add(5,6);

intsat_week=c.get(5);

if(sat_week>sun_week) {

ret=ret+sat_week;

}else{

ret=ret+ (6-sat_week+sun_week);

}

}

returnret;

}

/**

* 获得时间一与时间二直接的月差值

*@paramdate1

*@paramdate2

*@return

*/

public static int getMonthInterval(String date1,String date2) {

try{

SimpleDateFormat e=newSimpleDateFormat("yyyy-MM");

Calendar cal1=Calendar.getInstance();

cal1.setTime(e.parse(date1));

Calendar cal2=Calendar.getInstance();

cal2.setTime(e.parse(date2));

return(cal2.get(1) -cal1.get(1)) *12+ (cal2.get(2) -cal1.get(2));

}catch(Exceptionvar5) {

var5.printStackTrace();

return;

}

}

/**

* 给yyyy-MM格式的时间添加n个月

*@paramdate

*@paramn

*@return

*/

public static String getAddCountMonth(String date,int n) {

try{

SimpleDateFormat e=newSimpleDateFormat("yyyy-MM");

Calendar c=Calendar.getInstance();

c.setTime(e.parse(date));

c.add(2,n);

returne.format(c.getTime());

}catch(Exceptionvar4) {

var4.printStackTrace();

return null;

}

}

/**

* yyyy-MM-dd的时间字符串 获得今天星期几

*@paramdate

*@return

*/

public static int getThisDateOfWeek(String date) {

try{

SimpleDateFormat e=newSimpleDateFormat("yyyy-MM-dd");

Calendar cd=Calendar.getInstance();

cd.setTime(e.parse(date));

intdayOfWeek=cd.get(7) -1;

returndayOfWeek;

}catch(ParseExceptionvar4) {

var4.printStackTrace();

return-1;

}

}

/**

* 获得这个月的第一天的日期

*@paramdate

*@return

*/

public static String getFirstDayOfMonth(String date) {

String[]ss= date.split("-");

Calendar cal=Calendar.getInstance();

cal.set(1,Integer.valueOf(ss[]).intValue());

cal.set(2,Integer.valueOf(ss[1]).intValue() -1);

intminDay=cal.getActualMinimum(5);

returnminDay

}

/**

* 获得今年第一天的日期

*@return

*/

public static Date getCurrYearFirst() {

Calendar currCal=Calendar.getInstance();

intcurrentYear=currCal.get(1);

returngetYearFirst(currentYear);

}

/**

* 获得指定年的第一天的日期

*@paramyear

*@return

*/

public static Date getYearFirst(int year) {

Calendar calendar=Calendar.getInstance();

calendar.clear();

calendar.set(1,year);

Date currYearFirst=calendar.getTime();

returncurrYearFirst;

}

/**

* 获得指定年的最后一天

*@paramyear

*@return

*/

public static Date getCurrYearLast(int year) {

Calendar calendar=Calendar.getInstance();

calendar.clear();

calendar.set(1,year);

calendar.roll(6,-1);

Date currYearLast=calendar.getTime();

returncurrYearLast;

}

/**

* 判断传入的值是不是今年的第一天

*@paramdate

*@return

*/

public static boolean judgeIsFirstDayOfYear(String date) {

Date firstDay=getYearFirst(Integer.parseInt(format(parse(date),"yyyy")));

returnformat(parse(date),"yyyy-MM-dd").equals(format(firstDay,"yyyy-MM-dd"));

}

/**

* 判断传入的时间是不是年的最后一天

*@paramdate

*@return

*/

public static boolean judgeIsLastDayOfYear(String date) {

Date lastDay=getCurrYearLast(Integer.parseInt(format(parse(date),"yyyy")));

returnformat(parse(date),"yyyy-MM-dd").equals(format(lastDay,"yyyy-MM-dd"));

}

/**

* 判断传入的时间是不是月的第一天

*@paramdate

*@return

*/

public static boolean judgeIsFirstDayOfMonth(String date) {

String firstDay=getFirstDayOfMonth(date);

returndate.equals(firstDay);

}

/**

* 判断传入的时间是不是月的最后一天

*@paramdate

*@return

*/

public static boolean judgeIsLastDayOfMonth(String date) {

String lastDay=getLastDayOfMonth(date);

returndate.equals(lastDay);

}

/**

* 获得今天开始的时间  比如:DateUtil.getYmhmsd(DateUtil.getStartTimeOfDay(new Date()))  结果:2018-05-03 00:00:00

*@paramdate

*@return

*/

public static Date  getStartTimeOfDay(Date date) {

Calendar day=Calendar.getInstance();

day.setTime(date);

day.set(11,);

day.set(12,);

day.set(13,);

day.set(14,);

returnday.getTime();

}

/**

* 获得今天结束时间  例如:DateUtil.getYmhmsd(DateUtil.getEndTimeOfDay(new Date()))  结果:2018-05-03 23:59:59

*@paramdate

*@return

*/

public static Date getEndTimeOfDay(Date date) {

Calendar day=Calendar.getInstance();

day.setTime(date);

day.set(11,23);

day.set(12,59);

day.set(13,59);

day.set(14,999);

returnday.getTime();

}

/**

* 获得今天开始的时间

*@return

*/

public static Date getTimesmorning() {

Calendar cal=Calendar.getInstance();

cal.set(11,);

cal.set(13,);

cal.set(12,);

cal.set(14,);

returncal.getTime();

}

/**

* 获得昨天开始的时间

*@return

*/

public static Date getYesterdaymorning() {

Calendar cal=Calendar.getInstance();

cal.setTimeInMillis(getTimesmorning().getTime() -86400000L);

returncal.getTime();

}

/**

* 获得今天开始减去七天 也就是上周的今天的开始时间  比如:DateUtil.getYmhmsd(DateUtil.getWeekFromNow()) 结果:2018-04-26 00:00:00

*@return

*/

public static Date getWeekFromNow() {

Calendar cal=Calendar.getInstance();

cal.setTimeInMillis(getTimesmorning().getTime() -604800000L);

returncal.getTime();

}

/**

* 获得今天晚上的时间

*@return

*/

public static Date getTimesnight() {

Calendar cal=Calendar.getInstance();

cal.set(11,24);

cal.set(13,);

cal.set(12,);

cal.set(14,);

returncal.getTime();

}

/**

* 获得这周开始的时间

*@return

*/

public static Date getStartOfThisWeek() {

GregorianCalendar currentDate=newGregorianCalendar();

currentDate.setFirstDayOfWeek(2);

currentDate.set(11,);

currentDate.set(12,);

currentDate.set(13,);

currentDate.set(7,2);

returncurrentDate.getTime();

}

/**

* 获得这周结束的时间

*@return

*/

public static Date getEndOfThisWeek() {

GregorianCalendar currentDate=newGregorianCalendar();

currentDate.setFirstDayOfWeek(2);

currentDate.set(11,23);

currentDate.set(12,59);

currentDate.set(13,59);

currentDate.set(7,1);

returncurrentDate.getTime();

}

/**

* 获得这个月开始的时间

*@return

*/

public static Date getTimesMonthmorning() {

Calendar cal=Calendar.getInstance();

cal.set(cal.get(1),cal.get(2),cal.get(5),,,);

cal.set(5,cal.getActualMinimum(5));

returncal.getTime();

}

/**

* 获得这个月结束的时间

*@return

*/

public static Date getTimesMonthnight() {

Calendar cal=Calendar.getInstance();

cal.set(cal.get(1),cal.get(2),cal.get(5),,,);

cal.set(5,cal.getActualMaximum(5));

cal.set(11,24);

returncal.getTime();

}

/**

* 获得下一个月开始的时间

*@return

*/

public static Date getLastMonthStartMorning() {

Calendar cal=Calendar.getInstance();

cal.setTime(getTimesMonthmorning());

cal.add(2,-1);

returncal.getTime();

}

/**

* 获得上一个月开始的时间

*@return

*/

public static Date getCurrentQuarterStartTime() {

Calendar c=Calendar.getInstance();

intcurrentMonth=c.get(2) +1;

SimpleDateFormat longSdf=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

SimpleDateFormat shortSdf=newSimpleDateFormat("yyyy-MM-dd");

Date now=null;

try{

if(currentMonth>=1&¤tMonth

c.set(2,);

}else if(currentMonth>=4&¤tMonth

c.set(2,3);

}else if(currentMonth>=7&¤tMonth

c.set(2,4);

}else if(currentMonth>=10&¤tMonth

c.set(2,9);

}

c.set(5,1);

now=longSdf.parse(shortSdf.format(c.getTime()) +" 00:00:00");

}catch(Exceptionvar6) {

var6.printStackTrace();

}

returnnow;

}

/**

* 获得上一个月结束的时间

*@return

*/

public static Date getCurrentQuarterEndTime() {

Calendar cal=Calendar.getInstance();

cal.setTime(getCurrentQuarterStartTime());

cal.add(2,3);

returncal.getTime();

}

/**

* 获得当前年开始的时间

*@return

*/

public static Date getCurrentYearStartTime() {

Calendar cal=Calendar.getInstance();

cal.set(cal.get(1),cal.get(2),cal.get(5),,,);

cal.set(5,cal.getActualMinimum(1));

returncal.getTime();

}

/**

* 获得当前年结束的时间

*@return

*/

public static Date getCurrentYearEndTime() {

Calendar cal=Calendar.getInstance();

cal.setTime(getCurrentYearStartTime());

cal.add(1,1);

returncal.getTime();

}

/**

* 获得下一年开始的时间

*@return

*/

public static Date getLastYearStartTime() {

Calendar cal=Calendar.getInstance();

cal.setTime(getCurrentYearStartTime());

cal.add(1,-1);

returncal.getTime();

}

/**

* 给出分钟数  计算小时  比如:DateUtil.secToTime(61)  结果:01:01

*@paramtime

*@return

*/

public static String secToTime(int  time) {

String timeStr=null;

booleanhour=false;

booleanminute=false;

booleansecond=false;

if(time 

return"00:00";

}else{

intminute1= time /60;

intsecond1;

if(minute1

second1= time %60;

timeStr=unitFormat(minute1) +":"+unitFormat(second1);

}else{

inthour1=minute1/60;

if(hour1>99) {

return"99:59:59";

}

minute1%=60;

second1= time -hour1*3600-minute1*60;

timeStr=unitFormat(hour1) +":"+unitFormat(minute1) +":"+unitFormat(second1);

}

returntimeStr;

}

}

/**

* 给1-9的数字前面加上0  比如:DateUtil.unitFormat(1)  结果:01

*@parami

*@return

*/

public static String unitFormat(int i) {

String retStr=null;

if(i >=&& i 

retStr="0"+Integer.toString(i);

}else{

retStr=""+ i;

}

returnretStr;

}

public static voidmain(String[] args) {

Date date=getEndOfThisWeek();

System.out.println(date);

}

}
相关推荐
zww894911127 分钟前
家政多商户系统开发:从架构设计到落地实践
java·eclipse
snow@li1 小时前
Java:微服务项目与单体项目区别、市场占有率全景深度分析
java·开发语言·微服务
还是大剑师兰特1 小时前
Maven‑3.9.16 Windows 下载+安装+环境变量完整教程
java·windows·maven
吴声子夜歌1 小时前
Java——性能和效率
java·开发语言
meilindehuzi_a1 小时前
LangChain.js 对话 Memory 实战:History 持久化、截断与摘要压缩
java·javascript·langchain
zhougl9962 小时前
主流漏洞扫描工具
java
一只小阿乐2 小时前
java 语法学习 1
java·开发语言·学习
2601_962073972 小时前
苍穹外卖-day07(Spring Cache & 购物车业务逻辑)
java·后端·spring
顶点多余2 小时前
算法哪些事儿---2
java·开发语言