說明:比如當天日期爲2019-02-18
運行結果:
----上月所有日期:----
[2019-01-01, 2019-01-02, 2019-01-03, 2019-01-04, 2019-01-05, 2019-01-06, 2019-01-07, 2019-01-08, 2019-01-09, 2019-01-10, 2019-01-11, 2019-01-12, 2019-01-13, 2019-01-14, 2019-01-15, 2019-01-16, 2019-01-17, 2019-01-18, 2019-01-19, 2019-01-20, 2019-01-21, 2019-01-22, 2019-01-23, 2019-01-24, 2019-01-25, 2019-01-26, 2019-01-27, 2019-01-28, 2019-01-29, 2019-01-30, 2019-01-31]
----本月所有日期:(已過日期)----
[2019-02-01, 2019-02-02, 2019-02-03, 2019-02-04, 2019-02-05, 2019-02-06, 2019-02-07, 2019-02-08, 2019-02-09, 2019-02-10, 2019-02-11, 2019-02-12, 2019-02-13, 2019-02-14, 2019-02-15, 2019-02-16, 2019-02-17]
代碼:
public static void main(String[] args) {
String curMon = "2019-02-18";
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date curDate = stringToDate(sf, curMon);
//重置時間爲上個月的第一天
c.setTime(curDate);
c.set(Calendar.DAY_OF_MONTH, 1);
c.add(Calendar.MONTH, -1);
//getAllDay的第二個參數爲:是否取得當月所有日期
List<String> preList = getAllDay(c.getTime(), true);
//重置時間爲給定時間-1(即2019-02-17)
c.setTime(curDate);
c.add(Calendar.DAY_OF_MONTH, -1);
List<String> curList = getAllDay(c.getTime(), false);
System.out.println("----上月所有日期:----");
System.out.println(preList.toString());
System.out.println("----當月所有日期:(截止給定日期)----");
System.out.println(curList.toString());
}
private static Date stringToDate(SimpleDateFormat sdf, String sourceDate) {
Date date = null;
try {
date = sdf.parse(sourceDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
private static List<String> getAllDay(Date month, boolean lengthFlag) {
List<String> list = new ArrayList<String>();
Calendar cal = Calendar.getInstance();
cal.setTime(month);
int maxDate = cal.getActualMaximum(Calendar.DATE);
if (!lengthFlag) {
maxDate = cal.get(Calendar.DAY_OF_MONTH);
}
cal.set(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < maxDate; i++, cal.add(Calendar.DATE, 1)) {
Date d = cal.getTime();
String date = sdf.format(d);
list.add(date);
}
return list;
}