import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * * 根据年、月获取当前月日历 * @author 任伟刚 * @email 475609041@qq.com * */ public class CalendarTools { public static void drawCalendar(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); int year = cal.get(Calendar.YEAR); int month2 = cal.get(Calendar.MONTH)+1; //Calendar里取出来的month比实际的月份少1,所以要加上 // 期望的日历对象 GregorianCalendar d = new GregorianCalendar(year, month2, 0); // 当前的日历对象 GregorianCalendar gc = new GregorianCalendar(); int today = gc.get(java.util.Calendar.DAY_OF_MONTH);// 得到当前的日期 int monthToday = gc.get(java.util.Calendar.MONTH)+1;// 得到当前的月份 int month = d.get(java.util.Calendar.MONTH)+1;// 得到期望日期的月份 // 给期望日期设置一个月的第一天 d.set(java.util.Calendar.DAY_OF_MONTH, 1); // 获得期望月份的第一天是一周中的第几天 int weekday = d.get(java.util.Calendar.DAY_OF_WEEK); // 打印日历头 System.out.println("Mon\tTue\tWed\tFou\tFri\tSat\tSun"); // 制作日历第一行的缩进 for (int i = java.util.Calendar.SUNDAY; i < weekday; i++) { System.out.print("\t"); } do { // 打印日子 int day = d.get(java.util.Calendar.DAY_OF_MONTH); System.out.printf("%3d", day); // 用*号标记当天日期 if (day == today && month == monthToday) { System.out.print("*\t"); } else { System.out.print("\t"); } // 每当周六另起一行 if (weekday == java.util.Calendar.SATURDAY) { System.out.println(); } // 增加一天得到第二天 d.add(java.util.Calendar.DAY_OF_MONTH, 1); // 重新获得改天在一周中的位置 weekday = d.get(java.util.Calendar.DAY_OF_WEEK); } while (d.get(java.util.Calendar.MONTH)+1 == month); } public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); try { c.setTime(sdf.parse("2012-7-1")); drawCalendar(c.getTime()); } catch (ParseException e) { e.printStackTrace(); } } }?
1 楼
kookse
2012-06-14
还是有点意思的