Android开发中日期工具类DateUtil完整实例
本文实例讲述了Android开发中日期工具类DateUtil。分享给大家供大家参考,具体如下:
/**
*日期操作工具类.
*@ProjectERPForAndroid
*@Packagecom.ymerp.android.tools
*@authorchenlin
*@version1.0
*/
@SuppressLint("SimpleDateFormat")
publicclassDateUtil{
privatestaticfinalStringFORMAT="yyyy-MM-ddHH:mm:ss";
privatestaticfinalSimpleDateFormatdatetimeFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
privatestaticfinalSimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");
privatestaticfinalSimpleDateFormattimeFormat=newSimpleDateFormat("HH:mm:ss");
publicstaticDatestr2Date(Stringstr){
returnstr2Date(str,null);
}
/**
*字符串转时间
*@paramstr
*@paramformat
*@return
*/
publicstaticDatestr2Date(Stringstr,Stringformat){
if(str==null||str.length()==0){
returnnull;
}
if(format==null||format.length()==0){
format=FORMAT;
}
Datedate=null;
try{
SimpleDateFormatsdf=newSimpleDateFormat(format);
date=sdf.parse(str);
}catch(Exceptione){
e.printStackTrace();
}
returndate;
}
publicstaticCalendarstr2Calendar(Stringstr){
returnstr2Calendar(str,null);
}
publicstaticCalendarstr2Calendar(Stringstr,Stringformat){
Datedate=str2Date(str,format);
if(date==null){
returnnull;
}
Calendarc=Calendar.getInstance();
c.setTime(date);
returnc;
}
publicstaticStringdate2Str(Calendarc){//yyyy-MM-ddHH:mm:ss
returndate2Str(c,null);
}
publicstaticStringdate2Str(Calendarc,Stringformat){
if(c==null){
returnnull;
}
returndate2Str(c.getTime(),format);
}
publicstaticStringdate2Str(Dated){//yyyy-MM-ddHH:mm:ss
returndate2Str(d,null);
}
publicstaticStringdate2Str(Dated,Stringformat){//yyyy-MM-ddHH:mm:ss
if(d==null){
returnnull;
}
if(format==null||format.length()==0){
format=FORMAT;
}
SimpleDateFormatsdf=newSimpleDateFormat(format);
Strings=sdf.format(d);
returns;
}
publicstaticStringgetCurDateStr(){
Calendarc=Calendar.getInstance();
c.setTime(newDate());
returnc.get(Calendar.YEAR)+"-"+(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)+"-"
+c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
}
/**
*获得当前日期的字符串格式
*
*@paramformat
*@return
*/
publicstaticStringgetCurDateStr(Stringformat){
Calendarc=Calendar.getInstance();
returndate2Str(c,format);
}
/**
*格式到秒
*
*@paramtime
*@return
*/
publicstaticStringgetMillon(longtime){
returnnewSimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time);
}
/**
*格式到天
*
*@paramtime
*@return
*/
publicstaticStringgetDay(longtime){
returnnewSimpleDateFormat("yyyy-MM-dd").format(time);
}
/**
*格式到毫秒
*
*@paramtime
*@return
*/
publicstaticStringgetSMillon(longtime){
returnnewSimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time);
}
/**
*字符串转换到时间格式
*
*@paramdateStr
*需要转换的字符串
*@paramformatStr
*需要格式的目标字符串举例yyyy-MM-dd
*@returnDate返回转换后的时间
*@throwsParseException
*转换异常
*/
publicstaticDateStringToDate(StringdateStr,StringformatStr){
DateFormatsdf=newSimpleDateFormat(formatStr);
Datedate=null;
try{
date=sdf.parse(dateStr);
}catch(ParseExceptione){
e.printStackTrace();
}
returndate;
}
/**
*转化时间输入时间与当前时间的间隔
*
*@paramtimestamp
*@return
*/
publicstaticStringconverTime(longtimestamp){
longcurrentSeconds=System.currentTimeMillis()/1000;
longtimeGap=currentSeconds-timestamp;//与现在时间相差秒数
StringtimeStr=null;
if(timeGap>24*60*60){//1天以上
timeStr=timeGap/(24*60*60)+"天前";
}elseif(timeGap>60*60){//1小时-24小时
timeStr=timeGap/(60*60)+"小时前";
}elseif(timeGap>60){//1分钟-59分钟
timeStr=timeGap/60+"分钟前";
}else{//1秒钟-59秒钟
timeStr="刚刚";
}
returntimeStr;
}
/**
*把字符串转化为时间格式
*
*@paramtimestamp
*@return
*/
publicstaticStringgetStandardTime(longtimestamp){
SimpleDateFormatsdf=newSimpleDateFormat("MM月dd日HH:mm");
Datedate=newDate(timestamp*1000);
sdf.format(date);
returnsdf.format(date);
}
/**
*获得当前日期时间日期时间格式yyyy-MM-ddHH:mm:ss
*
*@return
*/
publicstaticStringcurrentDatetime(){
returndatetimeFormat.format(now());
}
/**
*格式化日期时间日期时间格式yyyy-MM-ddHH:mm:ss
*
*@return
*/
publicstaticStringformatDatetime(Datedate){
returndatetimeFormat.format(date);
}
/**
*获得当前时间时间格式HH:mm:ss
*
*@return
*/
publicstaticStringcurrentTime(){
returntimeFormat.format(now());
}
/**
*格式化时间时间格式HH:mm:ss
*
*@return
*/
publicstaticStringformatTime(Datedate){
returntimeFormat.format(date);
}
/**
*获得当前时间的java.util.Date对象
*
*@return
*/
publicstaticDatenow(){
returnnewDate();
}
publicstaticCalendarcalendar(){
Calendarcal=GregorianCalendar.getInstance(Locale.CHINESE);
cal.setFirstDayOfWeek(Calendar.MONDAY);
returncal;
}
/**
*获得当前时间的毫秒数
*
*详见{@linkSystem#currentTimeMillis()}
*
*@return
*/
publicstaticlongmillis(){
returnSystem.currentTimeMillis();
}
/**
*
*获得当前Chinese月份
*
*@return
*/
publicstaticintmonth(){
returncalendar().get(Calendar.MONTH)+1;
}
/**
*获得月份中的第几天
*
*@return
*/
publicstaticintdayOfMonth(){
returncalendar().get(Calendar.DAY_OF_MONTH);
}
/**
*今天是星期的第几天
*
*@return
*/
publicstaticintdayOfWeek(){
returncalendar().get(Calendar.DAY_OF_WEEK);
}
/**
*今天是年中的第几天
*
*@return
*/
publicstaticintdayOfYear(){
returncalendar().get(Calendar.DAY_OF_YEAR);
}
/**
*判断原日期是否在目标日期之前
*
*@paramsrc
*@paramdst
*@return
*/
publicstaticbooleanisBefore(Datesrc,Datedst){
returnsrc.before(dst);
}
/**
*判断原日期是否在目标日期之后
*
*@paramsrc
*@paramdst
*@return
*/
publicstaticbooleanisAfter(Datesrc,Datedst){
returnsrc.after(dst);
}
/**
*判断两日期是否相同
*
*@paramdate1
*@paramdate2
*@return
*/
publicstaticbooleanisEqual(Datedate1,Datedate2){
returndate1.compareTo(date2)==0;
}
/**
*判断某个日期是否在某个日期范围
*
*@parambeginDate
*日期范围开始
*@paramendDate
*日期范围结束
*@paramsrc
*需要判断的日期
*@return
*/
publicstaticbooleanbetween(DatebeginDate,DateendDate,Datesrc){
returnbeginDate.before(src)&&endDate.after(src);
}
/**
*获得当前月的最后一天
*
*HH:mm:ss为0,毫秒为999
*
*@return
*/
publicstaticDatelastDayOfMonth(){
Calendarcal=calendar();
cal.set(Calendar.DAY_OF_MONTH,0);//M月置零
cal.set(Calendar.HOUR_OF_DAY,0);//H置零
cal.set(Calendar.MINUTE,0);//m置零
cal.set(Calendar.SECOND,0);//s置零
cal.set(Calendar.MILLISECOND,0);//S置零
cal.set(Calendar.MONTH,cal.get(Calendar.MONTH)+1);//月份+1
cal.set(Calendar.MILLISECOND,-1);//毫秒-1
returncal.getTime();
}
/**
*获得当前月的第一天
*
*HH:mm:ssSS为零
*
*@return
*/
publicstaticDatefirstDayOfMonth(){
Calendarcal=calendar();
cal.set(Calendar.DAY_OF_MONTH,1);//M月置1
cal.set(Calendar.HOUR_OF_DAY,0);//H置零
cal.set(Calendar.MINUTE,0);//m置零
cal.set(Calendar.SECOND,0);//s置零
cal.set(Calendar.MILLISECOND,0);//S置零
returncal.getTime();
}
privatestaticDateweekDay(intweek){
Calendarcal=calendar();
cal.set(Calendar.DAY_OF_WEEK,week);
returncal.getTime();
}
/**
*获得周五日期
*
*注:日历工厂方法{@link#calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday
*
*@return
*/
publicstaticDatefriday(){
returnweekDay(Calendar.FRIDAY);
}
/**
*获得周六日期
*
*注:日历工厂方法{@link#calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday
*
*@return
*/
publicstaticDatesaturday(){
returnweekDay(Calendar.SATURDAY);
}
/**
*获得周日日期注:日历工厂方法{@link#calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday
*
*@return
*/
publicstaticDatesunday(){
returnweekDay(Calendar.SUNDAY);
}
/**
*将字符串日期时间转换成java.util.Date类型日期时间格式yyyy-MM-ddHH:mm:ss
*
*@paramdatetime
*@return
*/
publicstaticDateparseDatetime(Stringdatetime)throwsParseException{
returndatetimeFormat.parse(datetime);
}
/**
*将字符串日期转换成java.util.Date类型日期时间格式yyyy-MM-dd
*
*@paramdate
*@return
*@throwsParseException
*/
publicstaticDateparseDate(Stringdate)throwsParseException{
returndateFormat.parse(date);
}
/**
*将字符串日期转换成java.util.Date类型时间格式HH:mm:ss
*
*@paramtime
*@return
*@throwsParseException
*/
publicstaticDateparseTime(Stringtime)throwsParseException{
returntimeFormat.parse(time);
}
/**
*根据自定义pattern将字符串日期转换成java.util.Date类型
*
*@paramdatetime
*@parampattern
*@return
*@throwsParseException
*/
publicstaticDateparseDatetime(Stringdatetime,Stringpattern)throwsParseException{
SimpleDateFormatformat=(SimpleDateFormat)datetimeFormat.clone();
format.applyPattern(pattern);
returnformat.parse(datetime);
}
/**
*把秒格式化为分种小时
*
*@paramsecond
*@return
*/
publicstaticStringparseSecond(intsecond){
if(second>=60){
returnsecond/60+"分";
}elseif(second>=60*60){
returnsecond/60*60+"时";
}elseif(second>=60*60*24){
returnsecond/60*60+"天";
}else{
returnsecond+"秒";
}
}
/**
*比较时间大小
*@parambegin
*@paramend
*@return
*/
publicstaticintcompareDate(Stringbegin,Stringend){
DateFormatdf=newSimpleDateFormat("yyyy-MM-ddhh:mm");
try{
DatebeginDate=df.parse(begin);
DateendDate=df.parse(end);
if(beginDate.getTime()endDate.getTime()){
return-1;
}else{
return0;
}
}catch(Exceptionexception){
exception.printStackTrace();
}
return0;
}
/**
*获得年份
*@paramdate
*@return
*/
publicintgetYear(Datedate){
Calendarc=Calendar.getInstance();
c.setTime(date);
returnc.get(Calendar.YEAR);
}
/**
*获得月份
*@paramdate
*@return
*/
publicintgetMonth(Datedate){
Calendarc=Calendar.getInstance();
c.setTime(date);
returnc.get(Calendar.MONTH)+1;
}
/**
*获得星期几
*@paramdate
*@return
*/
publicintgetWeek(Datedate){
Calendarc=Calendar.getInstance();
c.setTime(date);
returnc.get(Calendar.WEEK_OF_YEAR);
}
/**
*获得日期
*@paramdate
*@return
*/
publicintgetDay(Datedate){
Calendarc=Calendar.getInstance();
c.setTime(date);
returnc.get(Calendar.DATE);
}
/**
*获得天数差
*@parambegin
*@paramend
*@return
*/
publiclonggetDayDiff(Datebegin,Dateend){
longday=1;
if(end.getTime()
PS:这里再为大家推荐几款关于日期与时间计算的在线工具供大家参考使用:
在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在线万年历日历:
http://tools.jb51.net/bianmin/wannianli
在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli
Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtime
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android日期与时间操作技巧总结》、《Android开发入门与进阶教程》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。