我用jsp编了一个可以显示上个月和这个月的日历的页面,但当当前月是1月或2月时,就报错, 请指教,小女子在这谢过各位大侠了:)
<%@ page language="java" import="java.util.*"%>
<%@ page import="org.hibernate.type.CalendarType"%>
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<script Language="JavaScript">
<!--


function form_onsubmit() {

    document.UserProfileCreationForm.opt=opt;
    document.UserProfileCreationForm.submit();
}

//--></script>
<%Date data = new Date();

            int ii = 0;
            String year, month, day;
            Calendar thisMonth = Calendar.getInstance();
            Calendar aMonth = Calendar.getInstance();
            Calendar bMonth = Calendar.getInstance();
            year = String.valueOf(thisMonth.get(Calendar.YEAR));
            month = String.valueOf(thisMonth.get(Calendar.MONTH));
            day = String.valueOf(thisMonth.get(Calendar.DATE));
            thisMonth.set(Calendar.MONTH, Integer.parseInt(month));
            
            if(Integer.parseInt(month)==0)
            {
            aMonth.set(Calendar.MONTH, 11);
            aMonth.set(Calendar.YEAR, Integer.parseInt(year)-1);
             System.out.println("000000000"+aMonth.get(Calendar.YEAR));
             
            }
            if(Integer.parseInt(month)==1)System.out.println("iiiiiiiii");
            
            if(Integer.parseInt(month)!=0)
            {
            aMonth.set(Calendar.MONTH, Integer.parseInt(month) - 1);
            System.out.println("1111111111114"+aMonth.get(Calendar.MONTH));}
        
            
%>

<%!String days[], adays[], bdays[];

    %>
<%days = new String[42];
            adays = new String[42];

            for (int i = 0; i < 42; i++) {
                days[i] = "";
                adays[i] = "";
            }
%>
<%thisMonth.setFirstDayOfWeek(Calendar.SUNDAY);
            thisMonth.set(Calendar.DAY_OF_MONTH, 1);
            int firstIndex = thisMonth.get(Calendar.DAY_OF_WEEK) - 2;
            int maxIndex = thisMonth.getActualMaximum(Calendar.DAY_OF_MONTH);
            for (int i = 0; i < maxIndex; i++) {
                days[firstIndex + i] = String.valueOf(i + 1);
            }

            aMonth.setFirstDayOfWeek(Calendar.SUNDAY);
            aMonth.set(Calendar.DAY_OF_MONTH, 1);
            int afirstIndex = aMonth.get(Calendar.DAY_OF_WEEK) - 2;
            int amaxIndex = aMonth.getActualMaximum(Calendar.DAY_OF_MONTH);
            for (int i = 0; i < amaxIndex; i++) {
                adays[afirstIndex + i] = String.valueOf(i + 1);
            }

            //bMonth.setFirstDayOfWeek(Calendar.SUNDAY);
            //bMonth.set(Calendar.DAY_OF_MONTH,1);
            //int bfirstIndex=bMonth.get(Calendar.DAY_OF_WEEK)-2;
            //int bmaxIndex=bMonth.getActualMaximum(Calendar.DAY_OF_MONTH);
            //for(int i=0;i<bmaxIndex;i++)
            //{
            // bdays[bfirstIndex+i]=String.valueOf(i+1);
            //}

            %>