当前位置: 代码迷 >> Web前端 >> Java台历,可根据年月获取当前月日历
  详细解决方案

Java台历,可根据年月获取当前月日历

热度:220   发布时间:2012-07-23 09:42:19.0
Java日历,可根据年月获取当前月日历
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  
还是有点意思的
  相关解决方案