求某年12个月的开始结束日期
程序员文章站
2024-03-16 00:01:13
...
题外话:
这个题目有很简单的做法,但是我更喜欢使用这种方式,这里是将12个月的开始时间和结束时间作为map的value属性,月份作为map的key属性,存储在map集合中,详细且看下文,
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.Map.Entry; public class TimeMonth { protected Calendar date = null; protected final static Integer MONTH_COUNT = 12; protected SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); protected Map<Integer, String[]> monthDateMap = new LinkedHashMap<Integer, String[]>(); public TimeMonth(int year) { date = Calendar.getInstance(); date.set(Calendar.YEAR, year); for (int i = 0; i < MONTH_COUNT; i++) { date.set(Calendar.MONTH, i); int minMonthDate = date.getActualMinimum(Calendar.DAY_OF_MONTH); date.set(Calendar.DATE, minMonthDate); String startMonth = dateFormat.format(date.getTime()); int maxMonthDate = date.getActualMaximum(Calendar.DAY_OF_MONTH); date.set(Calendar.DATE, maxMonthDate); String endMonth = dateFormat.format(date.getTime()); String monthDate[] = {startMonth,endMonth}; monthDateMap.put(i + 1, monthDate); } } /** * 要获取的 monthDateMap * * @return monthDateMap */ public Map<Integer, String[]> getMonthDateMap() { return monthDateMap; } /** * 要设置的 monthDateMap * * @param monthDateMap */ public void setMonthDateMap(Map<Integer, String[]> monthDateMap) { this.monthDateMap = monthDateMap; } public static void main(String[] args) { TimeMonth mon = new TimeMonth(2010); Map<Integer, String[]> monthDate = mon.getMonthDateMap(); Set<Entry<Integer, String[]>> set = monthDate.entrySet(); for (Entry<Integer, String[]> entry : set) { Integer monthNum = entry.getKey(); String[] months = entry.getValue(); System.out.println("第 " + monthNum + " 个月的开始日期为:" + months[0] + ",结束日期为:" + months[1]); } } }
这里的测试的年份为2010年,这段代码与闰年平年无关,结果为:
第 1 个月的开始日期为:2010-01-01,结束日期为:2010-01-31
第 2 个月的开始日期为:2010-02-01,结束日期为:2010-02-28
第 3 个月的开始日期为:2010-03-01,结束日期为:2010-03-31
第 4 个月的开始日期为:2010-04-01,结束日期为:2010-04-30
第 5 个月的开始日期为:2010-05-01,结束日期为:2010-05-31
第 6 个月的开始日期为:2010-06-01,结束日期为:2010-06-30
第 7 个月的开始日期为:2010-07-01,结束日期为:2010-07-31
第 8 个月的开始日期为:2010-08-01,结束日期为:2010-08-31
第 9 个月的开始日期为:2010-09-01,结束日期为:2010-09-30
第 10 个月的开始日期为:2010-10-01,结束日期为:2010-10-31
第 11 个月的开始日期为:2010-11-01,结束日期为:2010-11-30
第 12 个月的开始日期为:2010-12-01,结束日期为:2010-12-31