java 範圍日期轉集合輸出
阿新 • • 發佈:2018-11-11
...
import org.apache.commons.lang3.StringUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @Author: 帶著大佬飛 * @Description: 日期範圍轉集合 * @Date: 2018/9/25 */ public class DateParseUtil { /** * @Author: 帶著大佬飛 * @Description: 日期範圍轉集合,年月日格式:"2012-02-01" 、 年月格式:"2012-02" * @Date: 2018/9/25 * @param startData: 開始日期 eg: "2012-02-01" 、 "2012-02" * @param endData: 結束日期 ge: "2012-03-02" 、 "2012-03" * @Return: java.util.List<java.lang.String> */ public static List<String> dateParse(String startData, String endData){ List<String> resultList = new ArrayList<>(); if (StringUtils.isAnyBlank(startData,endData)){ return resultList; } SimpleDateFormat sdf ; if ( startData.length()<10 ){ sdf = new SimpleDateFormat("yyyy-MM"); Date d1 = null;//定義起始日期 Date d2 = null;//定義結束日期 try { d1 = sdf.parse(startData); d2 = sdf.parse(endData); } catch (ParseException e) { e.printStackTrace(); } Calendar dd = Calendar.getInstance();//定義日期例項 dd.setTime(d1);//設定日期起始時間 while(dd.getTime().before(d2)){//判斷是否到結束日期 String str = sdf.format(dd.getTime()); System.out.println(str); resultList.add(str); dd.add(Calendar.MONTH, 1);//進行當前日期月份加1 } resultList.add(endData); }else { sdf = new SimpleDateFormat("yyyy-MM-dd"); Date dBegin = null; Date dEnd = null; try { dBegin = sdf.parse(startData); dEnd = sdf.parse(endData); } catch (ParseException e) { e.printStackTrace(); } 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()); } for (Date date : lDate) { // System.out.println(sdf.format(date)); resultList.add(sdf.format(date)); } } return resultList; } }
...