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
还是有点意思的