时间处理函数工具分享(时间戳计算)
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.GregorianCalendar;
importjava.util.TimeZone;
/**
*时间处理函数
*
*@2008050915:50
*/
publicclassDateUtil{
privatestaticfinalStringDEFAULT_PATTERN="yyyy-MM-ddHH:mm:ss";
publicstaticfinalStringTIME_YEAR="yyyy";
publicstaticfinalStringTIME_MONEN="MM";
publicstaticfinalStringTIME_DAY="dd";
publicstaticStringgetDate(Stringinterval,Datestarttime,Stringpattern){
Calendartemp=Calendar.getInstance(TimeZone.getDefault());
temp.setTime(starttime);
temp.add(temp.MONTH,Integer.parseInt(interval));
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
returnsdf.format(temp.getTime());
}
/**
*将字符串类型转换为时间类型
*
*@return
*/
publicstaticDatestr2Date(Stringstr){
Dated=null;
SimpleDateFormatsdf=newSimpleDateFormat(DEFAULT_PATTERN);
try{
d=sdf.parse(str);
}catch(Exceptione){
e.printStackTrace();
}
returnd;
}
publicstaticDatestr2Date(Stringstr,Stringpattern){
Dated=null;
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
try{
d=sdf.parse(str);
}catch(Exceptione){
e.printStackTrace();
}
returnd;
}
/**
*将时间格式化
*
*@return
*/
publicstaticDateDatePattern(Datedate){
SimpleDateFormatsdf=newSimpleDateFormat(DEFAULT_PATTERN);
try{
Stringdd=sdf.format(date);
date=str2Date(dd);
}catch(Exceptione){
e.printStackTrace();
}
returndate;
}
/**
*将时间格式化
*/
publicstaticDateDatePattern(Datedate,Stringpattern){
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
try{
Stringdd=sdf.format(date);
date=str2Date(dd,pattern);
}catch(Exceptione){
e.printStackTrace();
}
returndate;
}
publicstaticStringdate2Str(Datedate){
SimpleDateFormatsdf=newSimpleDateFormat(DEFAULT_PATTERN);
returnsdf.format(date);
}
publicstaticStringdate2Str(Datedate,Stringformat){
SimpleDateFormatsdf=newSimpleDateFormat(format);
returnsdf.format(date);
}
/**
*获取昨天
*
*@paramdate
*@return
*@throwsException
*/
publicstaticDategetLastDate(Datedate){
Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
calendar.setTime(date);
calendar.add(calendar.DATE,-1);
returnstr2Date(date2Str(calendar.getTime()));
}
/**
*获取前几天
*@paramdate
*@return
*/
publicstaticDategetBeforeDate(Datedate,intdates){
Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
calendar.setTime(date);
calendar.add(calendar.DATE,-dates);
returnstr2Date(date2Str(calendar.getTime()));
}
/**
*获取上周第一天(周一)
*
*@paramdate
*@return
*@throwsException
*/
publicstaticDategetLastWeekStart(Datedate){
Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
calendar.setTime(date);
inti=calendar.get(calendar.DAY_OF_WEEK)-1;
intstartnum=0;
if(i==0){
startnum=7+6;
}else{
startnum=7+i-1;
}
calendar.add(calendar.DATE,-startnum);
returnstr2Date(date2Str(calendar.getTime()));
}
/**
*获取上周最后一天(周末)
*
*@paramdate
*@return
*@throwsException
*/
publicstaticDategetLastWeekEnd(Datedate){
Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
calendar.setTime(date);
inti=calendar.get(calendar.DAY_OF_WEEK)-1;
intendnum=0;
if(i==0){
endnum=7;
}else{
endnum=i;
}
calendar.add(calendar.DATE,-(endnum-1));
returnstr2Date(date2Str(calendar.getTime()));
}
/**
*根据年和月得到天数
*@paramnum月
*@paramyear年
*@return
*/
publicstaticintgetday(intnum,intyear){
if(num==1||num==3||num==5||num==7||num==8||num==10||num==12){
return31;
}elseif(num==2){
//判断是否为闰年
if(year%400==0||(year%4==0&&year%100!=0)){
return29;
}else{
return28;
}
}else{
return30;
}
}
/*
*计算当前日期距离下个月还有多少天
*/
publicstaticintgetdaymis(Datetime){
intyear=Integer.parseInt(
newSimpleDateFormat(TIME_YEAR).format(time));//年
intmm=Integer.parseInt(
newSimpleDateFormat(TIME_MONEN).format(time));//月
intdd=Integer.parseInt(
newSimpleDateFormat(TIME_DAY).format(time));//日
//获取当前年月的总天数
intsdd=getday(mm,year);
returnsdd-dd;
}
/**
*日期转秒数
*@paramdateString
*@return
*/
publicstaticlonggetTime(StringdateString){
longtime=0;
try{
Dateret=null;
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
ret=sdf.parse(dateString);
time=ret.getTime()/1000;
}catch(Exceptione){
}
returntime;
}
/**
*精确计算时间差,精确到日
*@paramfistill起始日期
*@paramnowtime结束日期
*@paramtypetype为1返回年月日(如:2年3个月零5天)否则返回总的天数
*@return
*/
publicstaticStringpatienage(Datefistill,Datenowtime,Integertype){
intfyear=Integer.parseInt(
newSimpleDateFormat(TIME_YEAR).format(fistill));//起始年
intfmm=Integer.parseInt(
newSimpleDateFormat(TIME_MONEN).format(fistill));//起始月
intfdd=Integer.parseInt(
newSimpleDateFormat(TIME_DAY).format(fistill));//起始日
intnyear=Integer.parseInt(
newSimpleDateFormat(TIME_YEAR).format(nowtime));//结束年
intnmm=Integer.parseInt(
newSimpleDateFormat(TIME_MONEN).format(nowtime));//结束月
intndd=Integer.parseInt(
newSimpleDateFormat(TIME_DAY).format(nowtime));//结束日
intcyear=nyear-fyear;
intcmm=nmm-fmm;
intcdd=ndd-fdd;
intzyear=0;
intzmm=0;
intzdd=0;
intcountddd=0; //年月日累计天数
if(cdd<0){
if(cmm<0){
zyear=cyear-1;
zmm=(cmm+12)-1;
intdd=getday(zmm,nyear-1);
zdd=dd+cdd;
countddd=zyear*365+zmm*30+zdd;
}elseif(cmm==0){
zyear=cyear-1;
zmm=12-1;
intdd=getday(zmm,nyear-1);
zdd=dd+cdd;
countddd=zyear*365+zmm*30+zdd;
}else{
zyear=cyear;
zmm=cmm-1;
intdd=getday(zmm,nyear);
zdd=dd+cdd;
countddd=zyear*365+zmm*30+zdd;
}
}elseif(cdd==0){
if(cmm<0){
zyear=cyear-1;
zmm=cmm+12;
zdd=0;
countddd=zyear*365+zmm*30;
}elseif(cmm==0){
zyear=cyear;
zmm=0;
zdd=0;
countddd=zyear*365+zmm*30;
}else{
zyear=cyear;
zmm=cmm;
zdd=0;
countddd=zyear*365+zmm*30;
}
}else{
if(cmm<0){
zyear=cyear-1;
zmm=cmm+12;
zdd=cdd;
countddd=zyear*365+zmm*30+zdd;
}elseif(cmm==0){
zyear=cyear;
zmm=0;
zdd=cdd;
countddd=zyear*365+zmm*30+zdd;
}else{
zyear=cyear;
zmm=cmm;
zdd=cdd;
countddd=zyear*365+zmm*30+zdd;
}
}
Stringptime=null;
if(zdd!=0){
if(zmm!=0){
if(zyear!=0){
ptime=zyear+"年"+zmm+"个月"+"零"+zdd+"天";
}else{
ptime=zmm+"个月"+"零"+zdd+"天";
}
}else{
if(zyear!=0){
ptime=zyear+"年"+"零"+zdd+"天";
}else{
ptime=zdd+"天";
}
}
}else{
if(zmm!=0){
if(zyear!=0){
ptime=zyear+"年"+zmm+"个月";
}else{
ptime=zmm+"个月";
}
}else{
if(zyear!=0){
ptime=zyear+"年";
}else{
ptime=null;
}
}
}
if(type==1){
returnptime; //返回年月日(如:2年3个月零5天)
}else{
returnString.valueOf(countddd); //返回总天数
}
}
/**
*得到月数
*@paramyear年数差
*@parammonth月数差
*@return
*/
publicstaticintgetCmm(Integeryear,Integermonth){
intzmm=0;
if(month<0){
zmm=(month+12)+(year-1)*12;
}elseif(month==0){
zmm=year*12;
}else{
zmm=year*12+month;
}
returnzmm;
}
/**
*改更现在时间
*/
publicstaticDatechangeDate(Stringtype,intvalue){
Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
if(type.equals("month")){
calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)+value);
}elseif(type.equals("date")){
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+value);
}
returncalendar.getTime();
}
/**
*更改时间
*/
publicstaticDatechangeDate(Datedate,Stringtype,intvalue){
if(date!=null){
//Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
Calendarcalendar=newGregorianCalendar();
calendar.setTime(date);
//Calendarcalendar=Calendar.
if(type.equals("month")){
calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)+value);
}elseif(type.equals("date")){
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+value);
}elseif(type.endsWith("year")){
calendar.set(Calendar.YEAR,calendar.get(Calendar.YEAR)+value);
}
returncalendar.getTime();
}
returnnull;
}
/**
*haoxw比较时间是否在这两个时间点之间
*
*@paramtime1
*@paramtime2
*@return
*/
publicstaticbooleancheckTime(Stringtime1,Stringtime2){
Calendarcalendar=Calendar.getInstance();
Datedate1=calendar.getTime();
Datedate11=DateUtil.str2Date(DateUtil.date2Str(date1,"yyyy-MM-dd")+""+time1);//起始时间
Calendarc=Calendar.getInstance();
c.add(Calendar.DATE,1);
Datedate2=c.getTime();
Datedate22=DateUtil.str2Date(DateUtil.date2Str(date2,"yyyy-MM-dd")+""+time2);//终止时间
Calendarscalendar=Calendar.getInstance();
scalendar.setTime(date11);//起始时间
Calendarecalendar=Calendar.getInstance();
ecalendar.setTime(date22);//终止时间
Calendarcalendarnow=Calendar.getInstance();
if(calendarnow.after(scalendar)&&calendarnow.before(ecalendar)){
returntrue;
}else{
returnfalse;
}
}
/**
*haoxw比较时间是否在这两个时间点之间
*
*@paramdate11
*@paramdate22
*@return
*/
publicstaticbooleancheckTime(Datedate11,Datedate22){
Calendarscalendar=Calendar.getInstance();
scalendar.setTime(date11);//起始时间
Calendarecalendar=Calendar.getInstance();
ecalendar.setTime(date22);//终止时间
Calendarcalendarnow=Calendar.getInstance();
if(calendarnow.after(scalendar)&&calendarnow.before(ecalendar)){
returntrue;
}else{
returnfalse;
}
}
publicstaticbooleancheckDate(Stringdate1,Stringdate2){
Datedate11=DateUtil.str2Date(date1,"yyyy-MM-ddHH:mm:ss");//起始时间
Datedate22=DateUtil.str2Date(date2,"yyyy-MM-ddHH:mm:ss");//终止时间
Calendarscalendar=Calendar.getInstance();
scalendar.setTime(date11);//起始时间
Calendarecalendar=Calendar.getInstance();
ecalendar.setTime(date22);//终止时间
Calendarcalendarnow=Calendar.getInstance();
System.out.println(date11.toString());
System.out.println(date22.toString());
System.out.println(scalendar.toString());
System.out.println(ecalendar.toString());
System.out.println(calendarnow.toString());
if(calendarnow.after(scalendar)&&calendarnow.before(ecalendar)){
returntrue;
}else{
returnfalse;
}
}
/**
*获取interval天之前的日期
*
*@paraminterval
*@paramstarttime
*@parampattern
*@return
*/
publicstaticDategetIntervalDate(Stringinterval,Datestarttime,Stringpattern){
Calendartemp=Calendar.getInstance();
temp.setTime(starttime);
temp.add(temp.DATE,Integer.parseInt(interval));
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
Stringshijian=sdf.format(temp.getTime());
returnstr2Date(shijian);
}
publicstaticDateformatDate(Datedate){
SimpleDateFormatbartDateFormat=
newSimpleDateFormat("yyyy-MM-dd");
System.out.println(bartDateFormat.format(date));
SimpleDateFormatbartDateFormat1=newSimpleDateFormat("yyyy-MM-dd");
try{
Datedate1=bartDateFormat1.parse(bartDateFormat.format(date));
}catch(ParseExceptione){
e.printStackTrace();
}
System.out.println(date.getTime());
returndate;
}
publicstaticvoidmain(Stringarf[]){
/*Stringtime1="2009-05-0719:20:00";
Stringtime2="2009-05-0819:30:00";
DateUtild=newDateUtil();
System.out.println(d.checkDate(time1,time2));
System.out.println(d.date2Str(newDate()));*/
//System.out.println(d.getIntervalDate("-3",newDate(),DEFAULT_PATTERN));
Calendarcalendar=Calendar.getInstance(TimeZone.getDefault());
System.out.println(calendar.toString());
System.out.println(DateUtil.str2Date("20090731","yyyyMMdd"));
System.out.println(DateUtil.getBeforeDate(newDate(),2));
System.out.println(DateUtil.DatePattern(newDate()));
SimpleDateFormatbartDateFormat=
newSimpleDateFormat("yyyy-MM-dd");
Datedate=newDate();
System.out.println("date;"+bartDateFormat.format(date));
SimpleDateFormatbartDateFormat1=newSimpleDateFormat("yyyy-MM-dd");
try{
Datedate1=bartDateFormat1.parse(bartDateFormat.format(date));
System.out.println("日期:"+date1);
}catch(ParseExceptione){
e.printStackTrace();
}
}
}
相关文章
- WMWS在线监测管理系统的工程常用计算工具
- 十年磨一剑,光谷企业宇微光学成功研发计算光刻EDA软件
- ACS Med Chem Lett|现代药物研发中的计算应用和工具汇总
- Java里面 根据一个字符串 计算他的hash 值(工具类)md5散列的方式计算hash值
- 文件Hash计算工具(MD5/SHA1/SHA256/CRC32)
- 2022年35个量子计算开源工具【附各工具链接,建议收藏!】
- ChatGPT爆火,揭秘AI大模型背后的高性能计算网络
- Oracle 无监听服务: 开启新时代的计算模式(oracle无监听服务)
- 计算MySQL中的时间差(mysql时间计算)
- 新型计算方式:Redis实现快速求和(redis求和)
- 【ACM】阶乘之和 – 避免重复计算详解编程语言
- 甲骨文云计算平台推出免费迁移转换工具 吸引企业从微软或亚马逊迁移过来
- Oracle中强大的差函数: 提升计算效率(oracle差函数)
- 利用Oracle实现复杂时间计算(oracle时间计算)
- 解锁Linux系统中的计算工具:BC(linuxbc)
- Redis:为何成为云计算中不可或缺的缓存工具?(redis好处)
- 基于Tenda Linux系统的新一代计算体验(tenda linux)
- Linux C程序计算时差的挑战(linuxc计算时间差)
- 利用Oracle轻松计算出有效的假日表(oracle中算出假日表)
- Oracle中日期计算的精确度毫秒级别(oracle中的日期微秒)
- MySQL实现不同列的数值相减计算(mysql不同列相减)
- 深入探索Oracle位移计算的奥秘(oracle位移计算)
- 库Oracle TB级数据库超强计算性能(oracle tb级数据)
- PHP根据两点间的经纬度计算距离