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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java操作日期的相关工具类,拿去即用

發(fā)布時(shí)間:2023/12/31 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java操作日期的相关工具类,拿去即用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

日期工具類(lèi)
1.獲取當(dāng)前Date型日期
2. 獲取當(dāng)前日期, 默認(rèn)格式為yyyy-MM-dd
3. 日期路徑 即年/月/日 如2018/08/08
4. 日期路徑 即年/月/日 如20180808
5. 日期型字符串轉(zhuǎn)化為日期 格式
6. 獲取服務(wù)器啟動(dòng)時(shí)間
7. 計(jì)算兩個(gè)時(shí)間差
8. 兩個(gè)日期相差年或者月 1 :年 , 2 :月
9. 日期相加(日期+年)
10.日期相加(日期+月)
11.特定天數(shù)
12.時(shí)間段是否重疊
13.秒轉(zhuǎn)成時(shí)分秒
14.LocalDate轉(zhuǎn)Date
15. 獲取某區(qū)間段內(nèi)的所有日期
16. 獲取該月的第一天
17. 獲取該月的最后一天
18.獲取時(shí)間段內(nèi)的月份
19.獲取兩個(gè)時(shí)間相差秒數(shù)
20.字符串 轉(zhuǎn) 日期
21.判斷時(shí)間是否在時(shí)間段內(nèi)
22.生成指定年的每一天
23.判斷是否是今年
24.獲取本周第一天和最后一天
25.獲取今天時(shí)間開(kāi)始和結(jié)束
26.獲取本月時(shí)間開(kāi)始和結(jié)束
27.獲取指定日期 幾天前的時(shí)間
28.獲取指定日期的0點(diǎn)和24點(diǎn)
29.獲取30天以前的時(shí)間
30.根據(jù)年月獲取對(duì)應(yīng)的月份天數(shù)

package com.ngs.common.utils;import java.lang.management.ManagementFactory; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List;import org.apache.commons.lang3.time.DateFormatUtils;/*** 時(shí)間工具類(lèi)* @author Wik6*/ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {public static String YYYY = "yyyy";public static String YYYY_MM = "yyyy-MM";public static String YYYY_MM_DD = "yyyy-MM-dd";public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";private static String[] parsePatterns = {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM","yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM","yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};/*** 獲取當(dāng)前Date型日期** @return Date() 當(dāng)前日期*/public static Date getNowDate() {return new Date();}/*** 獲取當(dāng)前日期, 默認(rèn)格式為yyyy-MM-dd** @return String*/public static String getDate() {return dateTimeNow(YYYY_MM_DD);}public static final String getTime() {return dateTimeNow(YYYY_MM_DD_HH_MM_SS);}public static final String dateTimeNow() {return dateTimeNow(YYYYMMDDHHMMSS);}public static final String dateTimeNow(final String format) {return parseDateToStr(format, new Date());}public static final String dateTime(final Date date) {return parseDateToStr(YYYY_MM_DD, date);}public static final String parseDateToStr(final String format, final Date date) {return new SimpleDateFormat(format).format(date);}public static final Date dateTime(final String format, final String ts) {try {return new SimpleDateFormat(format).parse(ts);} catch (ParseException e) {throw new RuntimeException(e);}}/*** 日期路徑 即年/月/日 如2018/08/08*/public static final String datePath() {Date now = new Date();return DateFormatUtils.format(now, "yyyy/MM/dd");}/*** 日期路徑 即年/月/日 如20180808*/public static final String dateTime() {Date now = new Date();return DateFormatUtils.format(now, "yyyyMMdd");}/*** 日期型字符串轉(zhuǎn)化為日期 格式*/public static Date parseDate(Object str) {if (str == null) {return null;}try {return parseDate(str.toString(), parsePatterns);} catch (ParseException e) {return null;}}/*** 獲取服務(wù)器啟動(dòng)時(shí)間*/public static Date getServerStartDate() {long time = ManagementFactory.getRuntimeMXBean().getStartTime();return new Date(time);}/*** 計(jì)算兩個(gè)時(shí)間差*/public static String getDatePoor(Date endDate, Date nowDate) {long nd = 1000 * 24 * 60 * 60;long nh = 1000 * 60 * 60;long nm = 1000 * 60;// long ns = 1000;// 獲得兩個(gè)時(shí)間的毫秒時(shí)間差異long diff = endDate.getTime() - nowDate.getTime();// 計(jì)算差多少天long day = diff / nd;// 計(jì)算差多少小時(shí)long hour = diff % nd / nh;// 計(jì)算差多少分鐘long min = diff % nd % nh / nm;// 計(jì)算差多少秒//輸出結(jié)果// long sec = diff % nd % nh % nm / ns;return day + "天" + hour + "小時(shí)" + min + "分鐘";}//兩個(gè)日期相差年或者月 1 :年 , 2 :月public static int getMonthNum(String date1, String date2, int type) throws java.text.ParseException {int result = 0;SimpleDateFormat sdf = new SimpleDateFormat(type == 1 ? "yyyy" : "yyyy-MM");Calendar c1 = Calendar.getInstance();Calendar c2 = Calendar.getInstance();c1.setTime(sdf.parse(date1));c2.setTime(sdf.parse(date2));if (type == 1) {result = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR);System.out.println("日期:" + date1 + "|" + date2 + "|,相差" + Math.abs(result) + "年");return result;} else {result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);int month = (c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR)) * 12;log.info("|到期時(shí)間:" + date2 + "減去現(xiàn)在日期:" + date1 + "|,剩余" + (month + result) + "個(gè)月");return month + result;}}//日期相加(日期+年)public String addDate(String date, int year) throws ParseException {//格式化日期的對(duì)象(轉(zhuǎn)化成習(xí)慣的時(shí)間格式)SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd");//靜態(tài)方法getInstance()使用默認(rèn)時(shí)區(qū)和語(yǔ)言環(huán)境獲得一個(gè)日歷。Calendar calendar = Calendar.getInstance();calendar.setTime(sdFormat.parse(date));calendar.add(Calendar.YEAR, year);String format = sdFormat.format(calendar.getTime());return format;}//日期相加(日期+月)public String addDate(String date, int mouth) throws ParseException {//格式化日期的對(duì)象(轉(zhuǎn)化成習(xí)慣的時(shí)間格式)SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd");//靜態(tài)方法getInstance()使用默認(rèn)時(shí)區(qū)和語(yǔ)言環(huán)境獲得一個(gè)日歷。Calendar calendar = Calendar.getInstance();calendar.setTime(sdFormat.parse(date));calendar.add(Calendar.MOUTH, mouth);String format = sdFormat.format(calendar.getTime());return format;}/*** 特定天數(shù)** @throws Exception*/public static long getDays(String str, String endt) throws Exception {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");Date strD = simpleDateFormat.parse(str);Date endtD = simpleDateFormat.parse(endt);long day = endtD.getTime() - strD.getTime();long l = day / (24 * 3600 * 1000);return l;}//時(shí)間段是否重疊public static boolean isOverlap(List<Date> startList, List<Date> endList) throws ParseException {//造3個(gè)時(shí)間段數(shù)據(jù)List<Timestamp> periodStart = new ArrayList<Timestamp>();List<Timestamp> periodend = new ArrayList<Timestamp>();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//開(kāi)始時(shí)間放到一個(gè)數(shù)組startList.stream().forEach(x -> {periodStart.add(new Timestamp(x.getTime()));});//結(jié)束時(shí)間放到一個(gè)數(shù)組endList.stream().forEach(x -> {periodend.add(new Timestamp(x.getTime()));});/*** 兩兩循環(huán)比較* 這里的3代表有三組數(shù)據(jù),先寫(xiě)死*/for (int i = 0; i < periodStart.size() - 1; i++) {Timestamp start0 = periodStart.get(i);Timestamp end0 = periodend.get(i);for (int j = i + 1; j < periodStart.size(); j++) {Timestamp start = periodStart.get(j);Timestamp end = periodend.get(j);if (start0.compareTo(end) >= 0 || end0.compareTo(start) <= 0) {/*** 說(shuō)明不重復(fù)。* 思路:該時(shí)間段的開(kāi)始時(shí)間如何大于另個(gè)一個(gè)時(shí)間段的結(jié)束時(shí)間,那么這個(gè)兩個(gè)時(shí)間段不會(huì)有重疊;* 如果該時(shí)間段的結(jié)束時(shí)間小于另一個(gè)時(shí)間段的時(shí)間,那么這個(gè)兩個(gè)時(shí)間段也不會(huì)有重疊。*/continue;} else {//說(shuō)明該時(shí)間段重復(fù)return true;}}}return false;}/*** 秒轉(zhuǎn)成時(shí)分秒** @param second 秒數(shù)* @return 時(shí)分秒*/public static String getFormatTime(Long second) {if (second != null) {String num0 = NumFormat(0);if (second < 60) {//秒return num0 + ":" + num0 + ":" + NumFormat(second);}if (second < 3600) {//分return num0 + ":" + NumFormat(second / 60) + ":" + NumFormat(second % 60);}if (second < 3600 * 24) {//時(shí)return NumFormat(second / 60 / 60) + ":" + NumFormat(second / 60 % 60) + ":" + NumFormat(second % 60);}if (second >= 3600 * 24) {//天return NumFormat(second / 60 / 60 / 24) + "天" + NumFormat(second / 60 / 60 % 24) + ":" + NumFormat(second / 60 % 60) + ":" + NumFormat(second % 60);}}return "--";}/*** LocalDate轉(zhuǎn)Date** @param localDate localDate* @return Date*/public static Date LocalDate2Date(LocalDate localDate) {ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());return Date.from(zonedDateTime.toInstant());}/*** 獲取某區(qū)間段內(nèi)的所有日期** @param startTime 2020-09-9* @param endTime 2020-09-11* @return 2020-09-9 2020-09-10 2020-09-11*/public static List<String> findDates(Date startTime, Date endTime) throws Exception {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");List<String> result = new ArrayList<>();Calendar calBegin = Calendar.getInstance();// 使用給定的 Date 設(shè)置此 Calendar 的時(shí)間calBegin.setTime(startTime);Calendar calEnd = Calendar.getInstance();// 使用給定的 Date 設(shè)置此 Calendar 的時(shí)間calEnd.setTime(endTime);// 此日期是否在指定日期之后while (endTime.after(calBegin.getTime())) {result.add(sdf.format(calBegin.getTime()));calBegin.add(Calendar.DAY_OF_MONTH, 1);}result.add(sdf.format(calEnd.getTime()));return result;}/*** 獲取該月的第一天** @param year 年* @param month 月* @return*/public static Date getFirstDay(int year, int month) {Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, year);// 設(shè)置月份,因?yàn)樵路輳?開(kāi)始,所以用month - 1c.set(Calendar.MONTH, month - 1);c.set(Calendar.DAY_OF_MONTH, 1);Date time = c.getTime();SimpleDateFormat slf = new SimpleDateFormat("yyyy-MM-dd");String format = slf.format(time);try {return slf.parse(format);} catch (ParseException e) {e.printStackTrace();}return null;}/*** 獲取該月的最后一天*/public static Date getLastDay ( int year, int month){Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, year);// 設(shè)置月份,因?yàn)樵路輳?開(kāi)始,所以用month - 1c.set(Calendar.MONTH, month - 1);// 獲取當(dāng)前時(shí)間下,該月的最大日期的數(shù)字int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);// 將獲取的最大日期數(shù)設(shè)置為Calendar實(shí)例的日期數(shù)c.set(Calendar.DAY_OF_MONTH, lastDay);Date time = c.getTime();SimpleDateFormat slf = new SimpleDateFormat("yyyy-MM-dd");String format = slf.format(time);try {return slf.parse(format);} catch (ParseException e) {e.printStackTrace();}return null;}/*** 獲取時(shí)間段內(nèi)的月份*/public static List<String> getMonthBetween(String minDate, String maxDate){ArrayList<String> result = new ArrayList<>();try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化為年月Calendar min = Calendar.getInstance();Calendar max = Calendar.getInstance();min.setTime(sdf.parse(minDate));min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);max.setTime(sdf.parse(maxDate));max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);while (min.before(max)) {result.add(sdf.format(min.getTime()));min.add(Calendar.MONTH, 1);}} catch (ParseException e) {e.printStackTrace();}return result;}/** 獲取兩個(gè)時(shí)間相差秒數(shù)** */public static long getTimeDelta(Date startDate,Date endDate) {long a = endDate.getTime();long b = startDate.getTime();long c =((a - b) / 1000);return c;}// 字符串 轉(zhuǎn) 日期public static Date strToDate(String str) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = sdf.parse(str);} catch (ParseException e) {}return date;}/*** 判斷時(shí)間是否在時(shí)間段內(nèi)** @param nowTime* @param beginTime* @param endTime* @return*/public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {Calendar date = Calendar.getInstance();date.setTime(nowTime);Calendar begin = Calendar.getInstance();begin.setTime(beginTime);Calendar end = Calendar.getInstance();end.setTime(endTime);if (date.after(begin) && date.before(end)) {return true;} else if (nowTime.compareTo(beginTime) == 0 ) {return true;} else {return false;}}/*** 生成指定年的每一天* @param year* @return*/public static List<String> getDaysByYear(int year){Calendar c=Calendar.getInstance();List<String> dates=new ArrayList<String>();for(int i=0;i<12;i++){c.set(year,i,1);int lastDay=c.getActualMaximum(Calendar.DATE);for(int j=1;j<=lastDay;j++){String month="";String day="";if(i<9) month="-0"+(i+1);else month="-"+(i+1);if(j<10) day="-0"+j;else day="-"+j;String date=year+month+day;dates.add(date);}}return dates;}//判斷是否是今年public static boolean isNowYear(int year){Calendar date = Calendar.getInstance();String years = String.valueOf(date.get(Calendar.YEAR));return years.equals(year + "");}public static String beforeDate(int day) {Calendar now = Calendar.getInstance();now.add(Calendar.DAY_OF_MONTH, -day);String endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now.getTime());return endDate;}private static String NumFormat(long sec) {if (String.valueOf(sec).length() < 2) {return "0" + sec;} else {return String.valueOf(sec);}}//獲取今年后兩位private static String yearLast() {String yearLast = new SimpleDateFormat("yy", Locale.CHINESE).format(Calendar.getInstance().getTime());return yearLast;}public static String mixTimeStr(String endTime) {Calendar rCalendar = Calendar.getInstance();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = null;try {date = simpleDateFormat.parse(endTime);} catch (Exception e) {e.printStackTrace();}rCalendar.setTime(date);//里面的date換成自己的時(shí)間字段rCalendar.add(Calendar.HOUR, 23);rCalendar.add(Calendar.MINUTE, 59);rCalendar.add(Calendar.SECOND, 59);return simpleDateFormat.format(rCalendar.getTime());}/*** 獲取本周的第一天* @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 getWeekEnd(){Calendar cal=Calendar.getInstance();cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));cal.add(Calendar.DAY_OF_WEEK, 1);Date time=cal.getTime();return new SimpleDateFormat("yyyy-MM-dd").format(time)+" 23:59:59";}//獲取今天 00.00public static Date getStartTime() {Calendar todayStart = Calendar.getInstance();todayStart.set(Calendar.HOUR, 0);todayStart.set(Calendar.MINUTE, 0);todayStart.set(Calendar.SECOND, 0);todayStart.set(Calendar.MILLISECOND, 0);return todayStart.getTime();}//獲取今天 23.59public static Date getEndTime() {Calendar todayEnd = Calendar.getInstance();todayEnd.set(Calendar.HOUR, 23);todayEnd.set(Calendar.MINUTE, 59);todayEnd.set(Calendar.SECOND, 59);todayEnd.set(Calendar.MILLISECOND, 999);return todayEnd.getTime();}// 獲得本月第一天0點(diǎn)時(shí)間public static Date getTimesMonthmorning() {Calendar cal = Calendar.getInstance();cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));return cal.getTime();}// 獲得本月最后一天24點(diǎn)時(shí)間public static Date getTimesMonthnight() {Calendar cal = Calendar.getInstance();cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));cal.set(Calendar.HOUR_OF_DAY, 24);return cal.getTime();} //獲取指定日期 幾天前的時(shí)間public Date getDateAfter(Date d, int day) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Calendar now = Calendar.getInstance();now.setTime(d);now.set(Calendar.DATE, now.get(Calendar.DATE) - day);//+后 -前return now.getTime();}// 返回時(shí)間格式如:2020-02-17 00:00:00public static String getStartOfDay(Date time) {Calendar calendar = Calendar.getInstance();calendar.setTime(time);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}// 返回時(shí)間格式如:2020-02-19 23:59:59public static String getEndOfDay(Date time) {Calendar calendar = Calendar.getInstance();calendar.setTime(time);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}// 獲取30天以前的時(shí)間public static String getThirtyDaysAgo(Date time) {Calendar calendar = Calendar.getInstance();calendar.setTime(time);calendar.add(calendar.DATE, -30);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}/*** 根據(jù)年 月 獲取對(duì)應(yīng)的月份 天數(shù)*/public static int getDaysByYearMonth(int year, int month) { Calendar a = Calendar.getInstance();a.set(Calendar.YEAR, year);a.set(Calendar.MONTH, month - 1);a.set(Calendar.DATE, 1);a.roll(Calendar.DATE, -1);int maxDate = a.get(Calendar.DATE);return maxDate;}}

總結(jié)

以上是生活随笔為你收集整理的java操作日期的相关工具类,拿去即用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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