import java.text.ParseException; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; /** * @author ken * @Time 2011-12-18 * */ public class CalenderUtil { public static void main(String[] args) throws ParseException { //以取当天所在月份为例 List<String> list = AllDayOfMonth(new java.text.SimpleDateFormat( "yyyy-MM").parse("2011-12-18")); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } System.out.println(isLeapYear(2011)); } public static List<String> AllDayOfMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DATE, 1);//当月第一天 System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime()))); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); int firstday = c.get(Calendar.DAY_OF_MONTH); //当月第一天 System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime()))); Calendar lc = Calendar.getInstance(); lc.setTime(date); lc.add(Calendar.MONTH, 1);//月份加1 lc.set(Calendar.DATE, 0);//再减一天即是上月最后一天 lc.set(Calendar.HOUR_OF_DAY, 23); lc.set(Calendar.MINUTE, 59); lc.set(Calendar.SECOND, 59); lc.set(Calendar.MILLISECOND, 999); int lastday = lc.get(Calendar.DAY_OF_MONTH); System.out.println((new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(lc.getTime()))); Calendar nowDate = Calendar.getInstance(); nowDate.setTime(date); List<String> list = new ArrayList<String>(); for (int i = 1; i < 2 + lastday - firstday; i++) { nowDate.set(Calendar.DAY_OF_MONTH, i); list.add(new java.text.SimpleDateFormat("yyyy-MM-dd").format(nowDate.getTime())); } return list; } /** * 是否闰年 * * @param year * @return */ public static boolean isLeapYear(int year) { //return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); return new GregorianCalendar().isLeapYear(year); } }