日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java日期工具类DateUtil

發(fā)布時間:2023/12/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java日期工具类DateUtil 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到教程。

DateUtil類

[java]?view plain?copy
  • package?com.util;??
  • ??
  • import?java.text.SimpleDateFormat;??
  • import?java.util.ArrayList;??
  • import?java.util.Calendar;??
  • import?java.util.Date;??
  • import?java.util.HashMap;??
  • import?java.util.List;??
  • import?java.util.Map;??
  • ??
  • public?class?DateUtil?{??
  • ??
  • ????/**?
  • ?????*?獲取SimpleDateFormat?
  • ?????*?@param?parttern?日期格式?
  • ?????*?@return?SimpleDateFormat對象?
  • ?????*?@throws?RuntimeException?異常:非法日期格式?
  • ?????*/??
  • ????private?static?SimpleDateFormat?getDateFormat(String?parttern)?throws?RuntimeException?{??
  • ????????return?new?SimpleDateFormat(parttern);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期中的某數(shù)值。如獲取月份?
  • ?????*?@param?date?日期?
  • ?????*?@param?dateType?日期格式?
  • ?????*?@return?數(shù)值?
  • ?????*/??
  • ????private?static?int?getInteger(Date?date,?int?dateType)?{??
  • ????????Calendar?calendar?=?Calendar.getInstance();??
  • ????????calendar.setTime(date);??
  • ????????return?calendar.get(dateType);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期中某類型的某數(shù)值。如增加日期?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?dateType?類型?
  • ?????*?@param?amount?數(shù)值?
  • ?????*?@return?計算后日期字符串?
  • ?????*/??
  • ????private?static?String?addInteger(String?date,?int?dateType,?int?amount)?{??
  • ????????String?dateString?=?null;??
  • ????????DateStyle?dateStyle?=?getDateStyle(date);??
  • ????????if?(dateStyle?!=?null)?{??
  • ????????????Date?myDate?=?StringToDate(date,?dateStyle);??
  • ????????????myDate?=?addInteger(myDate,?dateType,?amount);??
  • ????????????dateString?=?DateToString(myDate,?dateStyle);??
  • ????????}??
  • ????????return?dateString;??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期中某類型的某數(shù)值。如增加日期?
  • ?????*?@param?date?日期?
  • ?????*?@param?dateType?類型?
  • ?????*?@param?amount?數(shù)值?
  • ?????*?@return?計算后日期?
  • ?????*/??
  • ????private?static?Date?addInteger(Date?date,?int?dateType,?int?amount)?{??
  • ????????Date?myDate?=?null;??
  • ????????if?(date?!=?null)?{??
  • ????????????Calendar?calendar?=?Calendar.getInstance();??
  • ????????????calendar.setTime(date);??
  • ????????????calendar.add(dateType,?amount);??
  • ????????????myDate?=?calendar.getTime();??
  • ????????}??
  • ????????return?myDate;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取精確的日期?
  • ?????*?@param?timestamps?時間long集合?
  • ?????*?@return?日期?
  • ?????*/??
  • ????private?static?Date?getAccurateDate(List<Long>?timestamps)?{??
  • ????????Date?date?=?null;??
  • ????????long?timestamp?=?0;??
  • ????????Map<Long,?long[]>?map?=?new?HashMap<Long,?long[]>();??
  • ????????List<Long>?absoluteValues?=?new?ArrayList<Long>();??
  • ??
  • ????????if?(timestamps?!=?null?&&?timestamps.size()?>?0)?{??
  • ????????????if?(timestamps.size()?>?1)?{??
  • ????????????????for?(int?i?=?0;?i?<?timestamps.size();?i++)?{??
  • ????????????????????for?(int?j?=?i?+?1;?j?<?timestamps.size();?j++)?{??
  • ????????????????????????long?absoluteValue?=?Math.abs(timestamps.get(i)?-?timestamps.get(j));??
  • ????????????????????????absoluteValues.add(absoluteValue);??
  • ????????????????????????long[]?timestampTmp?=?{?timestamps.get(i),?timestamps.get(j)?};??
  • ????????????????????????map.put(absoluteValue,?timestampTmp);??
  • ????????????????????}??
  • ????????????????}??
  • ??
  • ????????????????//?有可能有相等的情況。如2012-11和2012-11-01。時間戳是相等的??
  • ????????????????long?minAbsoluteValue?=?-1;??
  • ????????????????if?(!absoluteValues.isEmpty())?{??
  • ????????????????????//?如果timestamps的size為2,這是差值只有一個,因此要給默認值??
  • ????????????????????minAbsoluteValue?=?absoluteValues.get(0);??
  • ????????????????}??
  • ????????????????for?(int?i?=?0;?i?<?absoluteValues.size();?i++)?{??
  • ????????????????????for?(int?j?=?i?+?1;?j?<?absoluteValues.size();?j++)?{??
  • ????????????????????????if?(absoluteValues.get(i)?>?absoluteValues.get(j))?{??
  • ????????????????????????????minAbsoluteValue?=?absoluteValues.get(j);??
  • ????????????????????????}?else?{??
  • ????????????????????????????minAbsoluteValue?=?absoluteValues.get(i);??
  • ????????????????????????}??
  • ????????????????????}??
  • ????????????????}??
  • ??
  • ????????????????if?(minAbsoluteValue?!=?-1)?{??
  • ????????????????????long[]?timestampsLastTmp?=?map.get(minAbsoluteValue);??
  • ????????????????????if?(absoluteValues.size()?>?1)?{??
  • ????????????????????????timestamp?=?Math.max(timestampsLastTmp[0],?timestampsLastTmp[1]);??
  • ????????????????????}?else?if?(absoluteValues.size()?==?1)?{??
  • ????????????????????????//?當timestamps的size為2,需要與當前時間作為參照??
  • ????????????????????????long?dateOne?=?timestampsLastTmp[0];??
  • ????????????????????????long?dateTwo?=?timestampsLastTmp[1];??
  • ????????????????????????if?((Math.abs(dateOne?-?dateTwo))?<?100000000000L)?{??
  • ????????????????????????????timestamp?=?Math.max(timestampsLastTmp[0],?timestampsLastTmp[1]);??
  • ????????????????????????}?else?{??
  • ????????????????????????????long?now?=?new?Date().getTime();??
  • ????????????????????????????if?(Math.abs(dateOne?-?now)?<=?Math.abs(dateTwo?-?now))?{??
  • ????????????????????????????????timestamp?=?dateOne;??
  • ????????????????????????????}?else?{??
  • ????????????????????????????????timestamp?=?dateTwo;??
  • ????????????????????????????}??
  • ????????????????????????}??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}?else?{??
  • ????????????????timestamp?=?timestamps.get(0);??
  • ????????????}??
  • ????????}??
  • ??
  • ????????if?(timestamp?!=?0)?{??
  • ????????????date?=?new?Date(timestamp);??
  • ????????}??
  • ????????return?date;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?判斷字符串是否為日期字符串?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?true?or?false?
  • ?????*/??
  • ????public?static?boolean?isDate(String?date)?{??
  • ????????boolean?isDate?=?false;??
  • ????????if?(date?!=?null)?{??
  • ????????????if?(StringToDate(date)?!=?null)?{??
  • ????????????????isDate?=?true;??
  • ????????????}??
  • ????????}??
  • ????????return?isDate;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期字符串的日期風格。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?日期風格?
  • ?????*/??
  • ????public?static?DateStyle?getDateStyle(String?date)?{??
  • ????????DateStyle?dateStyle?=?null;??
  • ????????Map<Long,?DateStyle>?map?=?new?HashMap<Long,?DateStyle>();??
  • ????????List<Long>?timestamps?=?new?ArrayList<Long>();??
  • ????????for?(DateStyle?style?:?DateStyle.values())?{??
  • ????????????Date?dateTmp?=?StringToDate(date,?style.getValue());??
  • ????????????if?(dateTmp?!=?null)?{??
  • ????????????????timestamps.add(dateTmp.getTime());??
  • ????????????????map.put(dateTmp.getTime(),?style);??
  • ????????????}??
  • ????????}??
  • ????????dateStyle?=?map.get(getAccurateDate(timestamps).getTime());??
  • ????????return?dateStyle;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期字符串轉(zhuǎn)化為日期。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?日期?
  • ?????*/??
  • ????public?static?Date?StringToDate(String?date)?{??
  • ????????DateStyle?dateStyle?=?null;??
  • ????????return?StringToDate(date,?dateStyle);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期字符串轉(zhuǎn)化為日期。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?parttern?日期格式?
  • ?????*?@return?日期?
  • ?????*/??
  • ????public?static?Date?StringToDate(String?date,?String?parttern)?{??
  • ????????Date?myDate?=?null;??
  • ????????if?(date?!=?null)?{??
  • ????????????try?{??
  • ????????????????myDate?=?getDateFormat(parttern).parse(date);??
  • ????????????}?catch?(Exception?e)?{??
  • ????????????}??
  • ????????}??
  • ????????return?myDate;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期字符串轉(zhuǎn)化為日期。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?dateStyle?日期風格?
  • ?????*?@return?日期?
  • ?????*/??
  • ????public?static?Date?StringToDate(String?date,?DateStyle?dateStyle)?{??
  • ????????Date?myDate?=?null;??
  • ????????if?(dateStyle?==?null)?{??
  • ????????????List<Long>?timestamps?=?new?ArrayList<Long>();??
  • ????????????for?(DateStyle?style?:?DateStyle.values())?{??
  • ????????????????Date?dateTmp?=?StringToDate(date,?style.getValue());??
  • ????????????????if?(dateTmp?!=?null)?{??
  • ????????????????????timestamps.add(dateTmp.getTime());??
  • ????????????????}??
  • ????????????}??
  • ????????????myDate?=?getAccurateDate(timestamps);??
  • ????????}?else?{??
  • ????????????myDate?=?StringToDate(date,?dateStyle.getValue());??
  • ????????}??
  • ????????return?myDate;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期轉(zhuǎn)化為日期字符串。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?parttern?日期格式?
  • ?????*?@return?日期字符串?
  • ?????*/??
  • ????public?static?String?DateToString(Date?date,?String?parttern)?{??
  • ????????String?dateString?=?null;??
  • ????????if?(date?!=?null)?{??
  • ????????????try?{??
  • ????????????????dateString?=?getDateFormat(parttern).format(date);??
  • ????????????}?catch?(Exception?e)?{??
  • ????????????}??
  • ????????}??
  • ????????return?dateString;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期轉(zhuǎn)化為日期字符串。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?dateStyle?日期風格?
  • ?????*?@return?日期字符串?
  • ?????*/??
  • ????public?static?String?DateToString(Date?date,?DateStyle?dateStyle)?{??
  • ????????String?dateString?=?null;??
  • ????????if?(dateStyle?!=?null)?{??
  • ????????????dateString?=?DateToString(date,?dateStyle.getValue());??
  • ????????}??
  • ????????return?dateString;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期字符串轉(zhuǎn)化為另一日期字符串。失敗返回null。?
  • ?????*?@param?date?舊日期字符串?
  • ?????*?@param?parttern?新日期格式?
  • ?????*?@return?新日期字符串?
  • ?????*/??
  • ????public?static?String?StringToString(String?date,?String?parttern)?{??
  • ????????return?StringToString(date,?null,?parttern);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期字符串轉(zhuǎn)化為另一日期字符串。失敗返回null。?
  • ?????*?@param?date?舊日期字符串?
  • ?????*?@param?dateStyle?新日期風格?
  • ?????*?@return?新日期字符串?
  • ?????*/??
  • ????public?static?String?StringToString(String?date,?DateStyle?dateStyle)?{??
  • ????????return?StringToString(date,?null,?dateStyle);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期字符串轉(zhuǎn)化為另一日期字符串。失敗返回null。?
  • ?????*?@param?date?舊日期字符串?
  • ?????*?@param?olddParttern?舊日期格式?
  • ?????*?@param?newParttern?新日期格式?
  • ?????*?@return?新日期字符串?
  • ?????*/??
  • ????public?static?String?StringToString(String?date,?String?olddParttern,?String?newParttern)?{??
  • ????????String?dateString?=?null;??
  • ????????if?(olddParttern?==?null)?{??
  • ????????????DateStyle?style?=?getDateStyle(date);??
  • ????????????if?(style?!=?null)?{??
  • ????????????????Date?myDate?=?StringToDate(date,?style.getValue());??
  • ????????????????dateString?=?DateToString(myDate,?newParttern);??
  • ????????????}??
  • ????????}?else?{??
  • ????????????Date?myDate?=?StringToDate(date,?olddParttern);??
  • ????????????dateString?=?DateToString(myDate,?newParttern);??
  • ????????}??
  • ????????return?dateString;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將日期字符串轉(zhuǎn)化為另一日期字符串。失敗返回null。?
  • ?????*?@param?date?舊日期字符串?
  • ?????*?@param?olddDteStyle?舊日期風格?
  • ?????*?@param?newDateStyle?新日期風格?
  • ?????*?@return?新日期字符串?
  • ?????*/??
  • ????public?static?String?StringToString(String?date,?DateStyle?olddDteStyle,?DateStyle?newDateStyle)?{??
  • ????????String?dateString?=?null;??
  • ????????if?(olddDteStyle?==?null)?{??
  • ????????????DateStyle?style?=?getDateStyle(date);??
  • ????????????dateString?=?StringToString(date,?style.getValue(),?newDateStyle.getValue());??
  • ????????}?else?{??
  • ????????????dateString?=?StringToString(date,?olddDteStyle.getValue(),?newDateStyle.getValue());??
  • ????????}??
  • ????????return?dateString;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?增加日期的年份。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?yearAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加年份后的日期字符串?
  • ?????*/??
  • ????public?static?String?addYear(String?date,?int?yearAmount)?{??
  • ????????return?addInteger(date,?Calendar.YEAR,?yearAmount);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期的年份。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?yearAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加年份后的日期?
  • ?????*/??
  • ????public?static?Date?addYear(Date?date,?int?yearAmount)?{??
  • ????????return?addInteger(date,?Calendar.YEAR,?yearAmount);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期的月份。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?yearAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加月份后的日期字符串?
  • ?????*/??
  • ????public?static?String?addMonth(String?date,?int?yearAmount)?{??
  • ????????return?addInteger(date,?Calendar.MONTH,?yearAmount);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期的月份。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?yearAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加月份后的日期?
  • ?????*/??
  • ????public?static?Date?addMonth(Date?date,?int?yearAmount)?{??
  • ????????return?addInteger(date,?Calendar.MONTH,?yearAmount);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期的天數(shù)。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加天數(shù)后的日期字符串?
  • ?????*/??
  • ????public?static?String?addDay(String?date,?int?dayAmount)?{??
  • ????????return?addInteger(date,?Calendar.DATE,?dayAmount);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?增加日期的天數(shù)。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加天數(shù)后的日期?
  • ?????*/??
  • ????public?static?Date?addDay(Date?date,?int?dayAmount)?{??
  • ????????return?addInteger(date,?Calendar.DATE,?dayAmount);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期的小時。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加小時后的日期字符串?
  • ?????*/??
  • ????public?static?String?addHour(String?date,?int?hourAmount)?{??
  • ????????return?addInteger(date,?Calendar.HOUR_OF_DAY,?hourAmount);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?增加日期的小時。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加小時后的日期?
  • ?????*/??
  • ????public?static?Date?addHour(Date?date,?int?hourAmount)?{??
  • ????????return?addInteger(date,?Calendar.HOUR_OF_DAY,?hourAmount);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期的分鐘。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加分鐘后的日期字符串?
  • ?????*/??
  • ????public?static?String?addMinute(String?date,?int?hourAmount)?{??
  • ????????return?addInteger(date,?Calendar.MINUTE,?hourAmount);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?增加日期的分鐘。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加分鐘后的日期?
  • ?????*/??
  • ????public?static?Date?addMinute(Date?date,?int?hourAmount)?{??
  • ????????return?addInteger(date,?Calendar.MINUTE,?hourAmount);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?增加日期的秒鐘。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加秒鐘后的日期字符串?
  • ?????*/??
  • ????public?static?String?addSecond(String?date,?int?hourAmount)?{??
  • ????????return?addInteger(date,?Calendar.SECOND,?hourAmount);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?增加日期的秒鐘。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@param?dayAmount?增加數(shù)量。可為負數(shù)?
  • ?????*?@return?增加秒鐘后的日期?
  • ?????*/??
  • ????public?static?Date?addSecond(Date?date,?int?hourAmount)?{??
  • ????????return?addInteger(date,?Calendar.SECOND,?hourAmount);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的年份。失敗返回0。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?年份?
  • ?????*/??
  • ????public?static?int?getYear(String?date)?{??
  • ????????return?getYear(StringToDate(date));??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的年份。失敗返回0。?
  • ?????*?@param?date?日期?
  • ?????*?@return?年份?
  • ?????*/??
  • ????public?static?int?getYear(Date?date)?{??
  • ????????return?getInteger(date,?Calendar.YEAR);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的月份。失敗返回0。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?月份?
  • ?????*/??
  • ????public?static?int?getMonth(String?date)?{??
  • ????????return?getMonth(StringToDate(date));??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的月份。失敗返回0。?
  • ?????*?@param?date?日期?
  • ?????*?@return?月份?
  • ?????*/??
  • ????public?static?int?getMonth(Date?date)?{??
  • ????????return?getInteger(date,?Calendar.MONTH);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的天數(shù)。失敗返回0。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?天?
  • ?????*/??
  • ????public?static?int?getDay(String?date)?{??
  • ????????return?getDay(StringToDate(date));??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的天數(shù)。失敗返回0。?
  • ?????*?@param?date?日期?
  • ?????*?@return?天?
  • ?????*/??
  • ????public?static?int?getDay(Date?date)?{??
  • ????????return?getInteger(date,?Calendar.DATE);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?獲取日期的小時。失敗返回0。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?小時?
  • ?????*/??
  • ????public?static?int?getHour(String?date)?{??
  • ????????return?getHour(StringToDate(date));??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的小時。失敗返回0。?
  • ?????*?@param?date?日期?
  • ?????*?@return?小時?
  • ?????*/??
  • ????public?static?int?getHour(Date?date)?{??
  • ????????return?getInteger(date,?Calendar.HOUR_OF_DAY);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?獲取日期的分鐘。失敗返回0。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?分鐘?
  • ?????*/??
  • ????public?static?int?getMinute(String?date)?{??
  • ????????return?getMinute(StringToDate(date));??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的分鐘。失敗返回0。?
  • ?????*?@param?date?日期?
  • ?????*?@return?分鐘?
  • ?????*/??
  • ????public?static?int?getMinute(Date?date)?{??
  • ????????return?getInteger(date,?Calendar.MINUTE);??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?獲取日期的秒鐘。失敗返回0。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?秒鐘?
  • ?????*/??
  • ????public?static?int?getSecond(String?date)?{??
  • ????????return?getSecond(StringToDate(date));??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的秒鐘。失敗返回0。?
  • ?????*?@param?date?日期?
  • ?????*?@return?秒鐘?
  • ?????*/??
  • ????public?static?int?getSecond(Date?date)?{??
  • ????????return?getInteger(date,?Calendar.SECOND);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期?。默認yyyy-MM-dd格式。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?日期?
  • ?????*/??
  • ????public?static?String?getDate(String?date)?{??
  • ????????return?StringToString(date,?DateStyle.YYYY_MM_DD);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期。默認yyyy-MM-dd格式。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@return?日期?
  • ?????*/??
  • ????public?static?String?getDate(Date?date)?{??
  • ????????return?DateToString(date,?DateStyle.YYYY_MM_DD);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的時間。默認HH:mm:ss格式。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?時間?
  • ?????*/??
  • ????public?static?String?getTime(String?date)?{??
  • ????????return?StringToString(date,?DateStyle.HH_MM_SS);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的時間。默認HH:mm:ss格式。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@return?時間?
  • ?????*/??
  • ????public?static?String?getTime(Date?date)?{??
  • ????????return?DateToString(date,?DateStyle.HH_MM_SS);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的星期。失敗返回null。?
  • ?????*?@param?date?日期字符串?
  • ?????*?@return?星期?
  • ?????*/??
  • ????public?static?Week?getWeek(String?date)?{??
  • ????????Week?week?=?null;??
  • ????????DateStyle?dateStyle?=?getDateStyle(date);??
  • ????????if?(dateStyle?!=?null)?{??
  • ????????????Date?myDate?=?StringToDate(date,?dateStyle);??
  • ????????????week?=?getWeek(myDate);??
  • ????????}??
  • ????????return?week;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取日期的星期。失敗返回null。?
  • ?????*?@param?date?日期?
  • ?????*?@return?星期?
  • ?????*/??
  • ????public?static?Week?getWeek(Date?date)?{??
  • ????????Week?week?=?null;??
  • ????????Calendar?calendar?=?Calendar.getInstance();??
  • ????????calendar.setTime(date);??
  • ????????int?weekNumber?=?calendar.get(Calendar.DAY_OF_WEEK)?-?1;??
  • ????????switch?(weekNumber)?{??
  • ????????case?0:??
  • ????????????week?=?Week.SUNDAY;??
  • ????????????break;??
  • ????????case?1:??
  • ????????????week?=?Week.MONDAY;??
  • ????????????break;??
  • ????????case?2:??
  • ????????????week?=?Week.TUESDAY;??
  • ????????????break;??
  • ????????case?3:??
  • ????????????week?=?Week.WEDNESDAY;??
  • ????????????break;??
  • ????????case?4:??
  • ????????????week?=?Week.THURSDAY;??
  • ????????????break;??
  • ????????case?5:??
  • ????????????week?=?Week.FRIDAY;??
  • ????????????break;??
  • ????????case?6:??
  • ????????????week?=?Week.SATURDAY;??
  • ????????????break;??
  • ????????}??
  • ????????return?week;??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?獲取兩個日期相差的天數(shù)?
  • ?????*?@param?date?日期字符串?
  • ?????*?@param?otherDate?另一個日期字符串?
  • ?????*?@return?相差天數(shù)?
  • ?????*/??
  • ????public?static?int?getIntervalDays(String?date,?String?otherDate)?{??
  • ????????return?getIntervalDays(StringToDate(date),?StringToDate(otherDate));??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?@param?date?日期?
  • ?????*?@param?otherDate?另一個日期?
  • ?????*?@return?相差天數(shù)?
  • ?????*/??
  • ????public?static?int?getIntervalDays(Date?date,?Date?otherDate)?{??
  • ????????date?=?DateUtil.StringToDate(DateUtil.getDate(date));??
  • ????????long?time?=?Math.abs(date.getTime()?-?otherDate.getTime());??
  • ????????return?(int)time/(24?*?60?*?60?*?1000);??
  • ????}??
  • }??
  • DateStyle類

    [java]?view plain?copy
  • package?com.util;??
  • ??
  • public?enum?DateStyle?{??
  • ??????
  • ????MM_DD("MM-dd"),??
  • ????YYYY_MM("yyyy-MM"),??
  • ????YYYY_MM_DD("yyyy-MM-dd"),??
  • ????MM_DD_HH_MM("MM-dd?HH:mm"),??
  • ????MM_DD_HH_MM_SS("MM-dd?HH:mm:ss"),??
  • ????YYYY_MM_DD_HH_MM("yyyy-MM-dd?HH:mm"),??
  • ????YYYY_MM_DD_HH_MM_SS("yyyy-MM-dd?HH:mm:ss"),??
  • ??????
  • ????MM_DD_EN("MM/dd"),??
  • ????YYYY_MM_EN("yyyy/MM"),??
  • ????YYYY_MM_DD_EN("yyyy/MM/dd"),??
  • ????MM_DD_HH_MM_EN("MM/dd?HH:mm"),??
  • ????MM_DD_HH_MM_SS_EN("MM/dd?HH:mm:ss"),??
  • ????YYYY_MM_DD_HH_MM_EN("yyyy/MM/dd?HH:mm"),??
  • ????YYYY_MM_DD_HH_MM_SS_EN("yyyy/MM/dd?HH:mm:ss"),??
  • ??????
  • ????MM_DD_CN("MM月dd日"),??
  • ????YYYY_MM_CN("yyyy年MM月"),??
  • ????YYYY_MM_DD_CN("yyyy年MM月dd日"),??
  • ????MM_DD_HH_MM_CN("MM月dd日?HH:mm"),??
  • ????MM_DD_HH_MM_SS_CN("MM月dd日?HH:mm:ss"),??
  • ????YYYY_MM_DD_HH_MM_CN("yyyy年MM月dd日?HH:mm"),??
  • ????YYYY_MM_DD_HH_MM_SS_CN("yyyy年MM月dd日?HH:mm:ss"),??
  • ??????
  • ????HH_MM("HH:mm"),??
  • ????HH_MM_SS("HH:mm:ss");??
  • ??????
  • ??????
  • ????private?String?value;??
  • ??????
  • ????DateStyle(String?value)?{??
  • ????????this.value?=?value;??
  • ????}??
  • ??????
  • ????public?String?getValue()?{??
  • ????????return?value;??
  • ????}??
  • }??
  • Week類

    [java]?view plain?copy
  • package?com.util;??
  • ??
  • public?enum?Week?{??
  • ??
  • ????MONDAY("星期一",?"Monday",?"Mon.",?1),??
  • ????TUESDAY("星期二",?"Tuesday",?"Tues.",?2),??
  • ????WEDNESDAY("星期三",?"Wednesday",?"Wed.",?3),??
  • ????THURSDAY("星期四",?"Thursday",?"Thur.",?4),??
  • ????FRIDAY("星期五",?"Friday",?"Fri.",?5),??
  • ????SATURDAY("星期六",?"Saturday",?"Sat.",?6),??
  • ????SUNDAY("星期日",?"Sunday",?"Sun.",?7);??
  • ??????
  • ????String?name_cn;??
  • ????String?name_en;??
  • ????String?name_enShort;??
  • ????int?number;??
  • ??????
  • ????Week(String?name_cn,?String?name_en,?String?name_enShort,?int?number)?{??
  • ????????this.name_cn?=?name_cn;??
  • ????????this.name_en?=?name_en;??
  • ????????this.name_enShort?=?name_enShort;??
  • ????????this.number?=?number;??
  • ????}??
  • ??????
  • ????public?String?getChineseName()?{??
  • ????????return?name_cn;??
  • ????}??
  • ??
  • ????public?String?getName()?{??
  • ????????return?name_en;??
  • ????}??
  • ??
  • ????public?String?getShortName()?{??
  • ????????return?name_enShort;??
  • ????}??
  • ??
  • ????public?int?getNumber()?{??
  • ????????return?number;??
  • ????}??
  • }??
  • 我編寫這個util的目的主要是為了解決StringToDate的麻煩,日期的格式有很多,因此僅通過SimpleDateFormat只能格式化一個日期格式,所以我用DateStyle來匹配主流的日期格式,如果有新的日期格式同樣也可以加,但本人并未把所有日期格式都測試了,所以并不保證不出錯,但我保留了傳遞SimpleDateFormat的parttern的方式,因此可以通過這個來解決。

    另外,目前這個日期工具類還有個bug,就是如果日期太大(如2300-05-14)或太小的話,自動匹配日期格式的核心算法(getAccurateDate)還是有問題,目前這個版本支持的范圍,大概是:【加100年——當前時間——減100年】,這個bug筆者日后會考慮改進,另外如果大家對日期工具類有什么更好的方法,歡迎隨時與我溝通交流哦!

    ?

    ============友情鏈接============

    java日期工具類DateUtil-續(xù)二?http://blog.csdn.net/wangpeng047/article/details/8295623

    java日期工具類DateUtil-續(xù)一?http://blog.csdn.net/wangpeng047/article/details/8270466

    ?

    總結(jié)

    以上是生活随笔為你收集整理的java日期工具类DateUtil的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。