java 获取本年月份、本月/本周所有日期
生活随笔
收集整理的這篇文章主要介紹了
java 获取本年月份、本月/本周所有日期
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
獲取本年月份、本月/本周所有日期
獲取本年度的十二個月份 yyyy-MM
public static List<String> getMonthByYear(){List<String> data = new ArrayList<>();try {Calendar c = Calendar.getInstance();// 獲取當前的年份int year = c.get(Calendar.YEAR);// 定義時間格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 開始日期為當前年拼接1月份Date startDate = sdf.parse(year + "-01");// 結束日期為當前年拼接12月份Date endDate = sdf.parse(year + "-12");// 設置calendar的開始日期c.setTime(startDate);// 當前時間小于等于設定的結束時間while(c.getTime().compareTo(endDate) <= 0){String time = sdf.format(c.getTime());data.add(time);// 當前月份加1c.add(Calendar.MONTH, 1);}} catch (ParseException e) {e.printStackTrace();}return data;}遍歷本月度的每一天 yyyy-MM-dd
public static List<String> getDayByMonth(){List<String> data = new ArrayList<>();try {Calendar c = Calendar.getInstance();// 獲取當前的年份int year = c.get(Calendar.YEAR);// 獲取當前的月份(需要加1才是現在的月份)int month = c.get(Calendar.MONTH) + 1;// 獲取本月的總天數int dayCount = c.getActualMaximum(Calendar.DAY_OF_MONTH);// 定義時間格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 開始日期為當前年月拼接1號Date startDate = sdf.parse(year + "-" + month + "-01");// 結束日期為當前年月拼接該月最大天數Date endDate = sdf.parse(year + "-" + month + "-" + dayCount);// 設置calendar的開始日期c.setTime(startDate);// 當前時間小于等于設定的結束時間while(c.getTime().compareTo(endDate) <= 0){String time = sdf.format(c.getTime());data.add(time);// 當前日期加1c.add(Calendar.DATE, 1);}} catch (ParseException e) {e.printStackTrace();}return data;}遍歷本周的所有日期 yyyy-MM-dd
public static List<String> getDayByWeek(){List<String> data = new ArrayList<>();try {//獲取本周時間String yzTime = getTimeInterval(new Date());String[] time = yzTime.split(",");//本周第一天String startTime = time[0];//本周最后一天String endTime = time[1];//格式化日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date dBegin = sdf.parse(startTime);Date dEnd = sdf.parse(endTime);//獲取這周所有dateList<Date> lDate = findDates(dBegin, dEnd);for (Date date : lDate) {data.add(sdf.format(date));}} catch (Exception e) {e.printStackTrace();}return data;}// 根據指定日期獲取一周的第一天和最后一天日期public static String getTimeInterval(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);// 判斷要計算的日期是否是周日,如果是則減一天計算周六的,否則會出問題,計算到下一周去了// 獲得當前日期是一個星期的第幾天int dayWeek = cal.get(Calendar.DAY_OF_WEEK);if (1 == dayWeek) {cal.add(Calendar.DAY_OF_MONTH, -1);}// 設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一cal.setFirstDayOfWeek(Calendar.MONDAY);// 獲得當前日期是一個星期的第幾天int day = cal.get(Calendar.DAY_OF_WEEK);// 根據日歷的規則,給當前日期減去星期幾與一個星期第一天的差值cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String imptimeBegin = sdf.format(cal.getTime());cal.add(Calendar.DATE, 6);String imptimeEnd = sdf.format(cal.getTime());return imptimeBegin + "," + imptimeEnd;}/*** 查找日期* @param dBegin 開始日期* @param dEnd 結束日期* @return List<Date>*/public static List<Date> findDates(Date dBegin, Date dEnd) {List<Date> lDate = new ArrayList<>();lDate.add(dBegin);Calendar calBegin = Calendar.getInstance();// 使用給定的 Date 設置此 Calendar 的時間calBegin.setTime(dBegin);Calendar calEnd = Calendar.getInstance();// 使用給定的 Date 設置此 Calendar 的時間calEnd.setTime(dEnd);// 測試此日期是否在指定日期之后while (dEnd.after(calBegin.getTime())){// 根據日歷的規則,為給定的日歷字段添加或減去指定的時間量calBegin.add(Calendar.DAY_OF_MONTH, 1);lDate.add(calBegin.getTime());}return lDate;}總結
以上是生活随笔為你收集整理的java 获取本年月份、本月/本周所有日期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4月跳槽路
- 下一篇: 一个鼠标移出事件引发的问题