本人写了一个程序如下:
<%@ page contentType="text/html; charset=gb2312"%>
<% 
//Date类的引用
java.util.Date dt=new java.util.Date();
//获取年份
int year=dt.getYear();
year+=1900;
//获取月份
int month=dt.getMonth();
//获取日期
int date=dt.getDate();
//获取星期
int day=dt.getDay();
//将int型转换String
String str_year=String.valueOf(year);
String str_month=String.valueOf(month);
String str_day=String.valueOf(day);
//将月份和日期统一成二位整型
if(str_month.length()==1)
{
str_month="0"+str_month;

}String str_date=String.valueOf(date);
{
str_date="0"+str_date;
}//将获取的系统时间拼成字符串
String str_i=str_year+str_month+str_date+str_day;
String chi_num="";
String chi_num_total="";
char cha_i=' ';
String chi_year=null;
String chi_month=null;
String chi_date=null;
String chi_day=null;
//用For循环和switch语句获取中文时间信息
for(int j=0; j<str_i.length(); j++)
{
cha_i = str_i.charAt(j);
switch(cha_i)
{
case'0':chi_num="零";
break;
case'1':chi_num="一";
break;
case'2':chi_num="二";
break;
case'3':chi_num="三";
break;
case'4':chi_num="四";
break;
case'5':chi_num="五";
break;
case'6':chi_num="六";
break;
case'7':chi_num="七";
break;
case'8':chi_num="八";
break;
case'9':chi_num="九";
break;

}

chi_num_total+=chi_num;
if(j==3)
{
chi_year=chi_num_total;
chi_num_total="";
}

if((j==4)||(j==6))
{
if((cha_i=='1')||(cha_i=='0'))
{
chi_num_total="";
}

if(cha_i!='0')
{
chi_num_total+="十";
}

}

if(j==5)
{
chi_month=chi_num_total;
chi_num_total="";
}
if(j==7)
{
chi_date=chi_num_total;
chi_num_total="";
}
if(j==8)
{
if(cha_i=='0')
{
chi_num_total="日";
}
chi_day=chi_num_total;

}
}//得到最终结果
String chi_dt="今天是"+chi_year+"年"+chi_month+"月"+chi_date+"日"+"星期"+chi_day;
%>
<!-- 显示结果 -->
<%=chi_dt%>在网页上浏览时显示:今天是二零零九年四月三日星期日。这和真实日期不符,还请前辈指导。希望哪个高手再帮我注释一下里面if循环,小弟有些地方看不懂。谢谢了!!!

解决方案 »

  1.   

    得到月份数后要加1 比如int month=dt.getMonth()得到的是4的话,他真实表示的是5月。这个api上写明了的.
      

  2.   


    <%@ page contentType="text/html; charset=gb2312"%> 
    <% 
    //Date类的引用 
    java.util.Date dt=new java.util.Date(); 
    //获取年份 
    int year=dt.getYear(); 
    year+=1900; 
    //获取月份 
    int month=dt.getMonth(); 
    month+=1;
    //获取日期 
    int date=dt.getDate(); 
    //获取星期 
    int day=dt.getDay(); 
    //将int型转换String 
    String str_year=String.valueOf(year); 
    String str_month=String.valueOf(month); 
    String str_day=String.valueOf(day); 
    //将月份和日期统一成二位整型 
    if(str_month.length()==1) 

    str_month="0"+str_month; } String str_date=String.valueOf(date); 
    if(str_date.length()==1)

    str_date="0"+str_date; 
    } //将获取的系统时间拼成字符串 
    String str_i=str_year+str_month+str_date+str_day; 
    out.print(str_i+"<br>");String chi_num=""; 
    String chi_num_total=""; 
    char cha_i=' '; String chi_year=null; 
    String chi_month=null; 
    String chi_date=null; 
    String chi_day=null; 
    //用For循环和switch语句获取中文时间信息 
    for(int j=0; j <str_i.length(); j++) 

    cha_i = str_i.charAt(j); 
    switch(cha_i) 

    case'0':chi_num="零"; 
    break; 
    case'1':chi_num="一"; 
    break; 
    case'2':chi_num="二"; 
    break; 
    case'3':chi_num="三"; 
    break; 
    case'4':chi_num="四"; 
    break; 
    case'5':chi_num="五"; 
    break; 
    case'6':chi_num="六"; 
    break; 
    case'7':chi_num="七"; 
    break; 
    case'8':chi_num="八"; 
    break; 
    case'9':chi_num="九"; 
    break; } chi_num_total+=chi_num; 
    //年份的表示
    if(j==3) 

    chi_year=chi_num_total; 
    chi_num_total=""; 
    } //处理月份和天数的第一位数
    if((j==4)||(j==6)) { 
       //如果第一位数是0,就不显示零几月/日(比如零一),而直接显示几月/日
       //如果第一位数是1,就不显示一十几月/日(比如一十二),而直接显示十几月/日
       if((cha_i=='1')||(cha_i=='0')){ 
         chi_num_total=""; 
       } 
      //如果月份是11,12,就得显示十一月/十二月
      //如果天数大于19,就得显示二十/三十几日(下面解决了十/二十/三十日的显示)
      if(cha_i!='0') { 
        //十月/十日和其他的
        chi_num_total+="十"; 
      } 
    } //月份的表示(月份的第二位数)
    if(j==5) {
      //这块是去掉那个零的操作
        if(cha_i=='0'){
          chi_month=chi_num_total.substring(0,chi_num_total.length()-1);
        }else{
          chi_month=chi_num_total;
        }
       chi_num_total=""; 
    } //日期的表示(天数的第二位数)
    if(j==7) {
        //这块是去掉那个零的操作
        if(cha_i=='0'){
          chi_date=chi_num_total.substring(0,chi_num_total.length()-1);
        }else{
          chi_date=chi_num_total;
        }
       chi_num_total=""; 
    }
    //星期的显示
    if(j==8) 

    //如果是星期日,星期日是用0表示的
    if(cha_i=='0') 

    chi_num_total="日"; 

    chi_day=chi_num_total; } 
    } //得到最终结果 
    String chi_dt="今天是"+chi_year+"年"+chi_month+"月"+chi_date+"日"+"星期"+chi_day; 
    %> 
    <!-- 显示结果 --> 
    <%=chi_dt%> 建议在java类里面直接做好,然后在jsp页面直接调用就可以,这样有点繁琐!
    lz看看,自己再梳理一下!
      

  3.   


    LZ,你的那个零,壹....玖,最好不要用switch,建议用数组 String[] dataString={"零","壹",......"玖"};