漫步云端

移动开发(Android、iPhone、Windows Mobile) | JAVA | C | C++ | .net | Objective C | 微软企业开发技术 | 嵌入式系统设计与开发
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JAVA将输入的日期转换为中文日期

Posted on 2010-09-13 16:40  charley_yang  阅读(15967)  评论(0编辑  收藏  举报

JAVA将输入的日期转换为中文日期(例如: 2007-10-05 --> 二○○七年十月五日)

 

package com.business.practitioner;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
  * Creation date: 2010-5-22下午03:41:58
  * 功能: 将输入的日期转换为中文日期(例如: 2007-10-05  -->  二○○七年十月五日)
  * 说明:此程序假定输入格式为yyyy-mm-dd, 且年月日部分都为数字, 没有加上非法
  *      输入的相关校验
  *      测试可以输入 2007-01-05
  *                    2007-1-05
  *                    2007-10-05
  */
public class DateConvertor {
    /**
      * @param args
      */
  public static void main(String[] args) {
        // TODO Auto-generated method stub
        String issueDate = "2001-12-25";
        System.out.println(getYearStr(formatStr(issueDate)));
    }

  /**
  * create date:2010-5-22下午04:29:37
  * 描述:将日期转换为指定格式字符串
  * @param date  日期
  * @return
  */
  public static String getDateStr(Date date)
  {
  SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
  String datestr = sdf.format(date);
  return datestr;
  }
  /**
  * create date:2010-5-22下午03:40:44
  * 描述:取出日期字符串中的年份字符串
  * @param str 日期字符串
  * @return
  */
  public static String getYearStr(String str)
  {
  String yearStr = "";
  yearStr = str.substring(0,4);
  return yearStr;
  }
  
  /**
  * create date:2010-5-22下午03:40:47
  * 描述:取出日期字符串中的月份字符串
  * @param str日期字符串
  * @return
  */
  public static String getMonthStr(String str)
  {
  String m;
  int startIndex = str.indexOf("年");
  int endIndex = str.indexOf("月");
  monthStr = str.substring(startIndex+1,endIndex);
  return monthStr;
  }

    /**
      * create date:2010-5-22下午03:32:31
      * 描述:将源字符串中的阿拉伯数字格式化为汉字
      * @param sign 源字符串中的字符
      * @return
      */
    public static char formatDigit(char sign){
        if(sign == '0')
            sign = '0';
        if(sign == '1')
            sign = '一';
        if(sign == '2')
            sign = '二';
        if(sign == '3')
            sign = '三';
        if(sign == '4')
            sign = '四';
        if(sign == '5')
            sign = '五';
        if(sign == '6')
            sign = '六';
        if(sign == '7')
            sign = '七';
        if(sign == '8')
            sign = '八';
        if(sign == '9')
            sign = '九';
        return sign;
    }
  
    /**
      * create date:2010-5-22下午03:31:51
      * 描述: 获得月份字符串的长度
      * @param str  待转换的源字符串
      * @param pos1 第一个'-'的位置
      * @param pos2 第二个'-'的位置
      * @return
      */
    public static int getMidLen(String str,int pos1,int pos2){
        return str.substring(pos1+1, pos2).length();
    }
    /**
      * create date:2010-5-22下午03:32:17
      * 描述:获得日期字符串的长度
      * @param str  待转换的源字符串
      * @param pos2 第二个'-'的位置
      * @return
      */
    public static int getLastLen(String str,int pos2){
        return str.substring(pos2+1).length();
    }
  
  /**
  * create date:2010-5-22下午03:40:50
  * 描述:取出日期字符串中的日字符串
  * @param str 日期字符串
  * @return
  */
  public static String getDayStr(String str)
  {
  String dayStr = "";
  int startIndex = str.indexOf("月");
  int endIndex = str.indexOf("日");
  dayStr = str.substring(startIndex+1,endIndex);
  return dayStr;
  }
    /**
      * create date:2010-5-22下午03:32:46
      * 描述:格式化日期
      * @param str 源字符串中的字符
      * @return
      */
    public static String formatStr(String str){
        StringBuffer sb = new StringBuffer();
        int pos1 = str.indexOf("-");
        int pos2 = str.lastIndexOf("-");
        for(int i = 0; i < 4; i++){
            sb.append(formatDigit(str.charAt(i)));
        }
        sb.append('年');
        if(getMidLen(str,pos1,pos2) == 1){
            sb.append(formatDigit(str.charAt(5))+"月");
            if(str.charAt(7) != '0'){
                if(getLastLen(str, pos2) == 1){
                    sb.append(formatDigit(str.charAt(7))+"日");
                }
                if(getLastLen(str, pos2) == 2){
                    if(str.charAt(7) != '1' && str.charAt(8) != '0'){
                        sb.append(formatDigit(str.charAt(7))+"十"+formatDigit(str.charAt(8))+"日");
                    }
                    else if(str.charAt(7) != '1' && str.charAt(8) == '0'){
                        sb.append(formatDigit(str.charAt(7))+"十日");
                    }
                    else if(str.charAt(7) == '1' && str.charAt(8) != '0'){
                        sb.append("十"+formatDigit(str.charAt(8))+"日");
                    }
                    else{
                        sb.append("十日");
                    }
                }
            }
            else{
                sb.append(formatDigit(str.charAt(8))+"日");
            }
        }
        if(getMidLen(str,pos1,pos2) == 2){
            if(str.charAt(5) != '0' && str.charAt(6) != '0'){
                sb.append("十"+formatDigit(str.charAt(6))+"月");
                if(getLastLen(str, pos2) == 1){
                    sb.append(formatDigit(str.charAt(8))+"日");
                }
                if(getLastLen(str, pos2) == 2){
                    if(str.charAt(8) != '0'){
                        if(str.charAt(8) != '1' && str.charAt(9) != '0'){
                            sb.append(formatDigit(str.charAt(8))+"十"+formatDigit(str.charAt(9))+"日");
                        }
                        else if(str.charAt(8) != '1' && str.charAt(9) == '0'){
                            sb.append(formatDigit(str.charAt(8))+"十日");
                        }
                        else if(str.charAt(8) == '1' && str.charAt(9) != '0'){
                            sb.append("十"+formatDigit(str.charAt(9))+"日");
                        }
                        else{
                            sb.append("十日");
                        }
                    }
                    else{
                        sb.append(formatDigit(str.charAt(9))+"日");
                    }
                }
            }
            else if(str.charAt(5) != '0' && str.charAt(6) == '0'){
                sb.append("十月");
                if(getLastLen(str, pos2) == 1){
                    sb.append(formatDigit(str.charAt(8))+"日");
                }
                if(getLastLen(str, pos2) == 2){
                    if(str.charAt(8) != '0'){
                        if(str.charAt(8) != '1' && str.charAt(9) != '0'){
                            sb.append(formatDigit(str.charAt(8))+"十"+formatDigit(str.charAt(9))+"日");
                        }
                        else if(str.charAt(8) != '1' && str.charAt(9) == '0'){
                            sb.append(formatDigit(str.charAt(8))+"十日");
                        }
                        else if(str.charAt(8) == '1' && str.charAt(9) != '0'){
                            sb.append("十"+formatDigit(str.charAt(9))+"日");
                        }
                        else{
                            sb.append("十日");
                        }
                    }
                    else{
                        sb.append(formatDigit(str.charAt(9))+"日");
                    }
                }
            }
            else{
                sb.append(formatDigit(str.charAt(6))+"月");
                if(getLastLen(str, pos2) == 1){
                    sb.append(formatDigit(str.charAt(8))+"日");
                }
                if(getLastLen(str, pos2) == 2){
                    if(str.charAt(8) != '0'){
                        if(str.charAt(8) != '1' && str.charAt(9) != '0'){
                            sb.append(formatDigit(str.charAt(8))+"十"+formatDigit(str.charAt(9))+"日");
                        }
                        else if(str.charAt(8) != '1' && str.charAt(9) == '0'){
                            sb.append(formatDigit(str.charAt(8))+"十日");
                        }
                        else if(str.charAt(8) == '1' && str.charAt(9) != '0'){
                            sb.append("十"+formatDigit(str.charAt(9))+"日");
                        }
                        else{
                            sb.append("十日");
                        }
                    }
                    else{
                        sb.append(formatDigit(str.charAt(9))+"日");
                    }
                }
            }
        }
        return sb.toString();
    }
} 
微软企业开发技术 | 移动开发(Google Android、Windows Mobile)技术| 嵌入式系统设计与开发 | JAVA开发