黑马程序员技术交流社区
标题:
把数字日期转换成中文日期格式
[打印本页]
作者:
杨恩锋
时间:
2011-10-28 17:23
标题:
把数字日期转换成中文日期格式
把数字日期转换成中文日期格式,比如提示输入一个日期,假设是当前2011年10日28日这种格式,然后要求转换成:二零一一年十月二十八日。
作者:
黄朝辉
时间:
2011-10-28 20:24
写了个类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
public class ChineseDate
{
private int year;
public int Year
{
get { return year; }
set { year = value; }
}
private int month;
public int Month
{
get { return month; }
set { month = value; }
}
private int day;
public int Day
{
get { return day; }
set { day = value; }
}
public ChineseDate(int year, int month, int day)
{
this.year = year;
this.month = month;
this.day = day;
}
public string GetChineseDate()
{
string str = string.Empty;
foreach (char c in year.ToString())
{
str += ChinaNumber(c);
}
str += "年";
if (month.ToString().Length == 1)
{
foreach (char c in month.ToString())
{
str += ChinaNumber(c);
}
}
else
{
str += ChinaNumber(month.ToString());
}
str += "月";
if (day.ToString().Length == 1)
{
foreach (char c in day.ToString())
{
str += ChinaNumber(c);
}
}
else
{
str += ChinaNumber(day.ToString());
}
str += "日";
return str;
}
public string ChinaNumber(char number)
{
string value=string.Empty;
switch (number)
{
case '0':
value = "零";
break;
case '1':
value = "一";
break;
case '2':
value = "二";
break;
case '3':
value = "三";
break;
case '4':
value = "四";
break;
case '5':
value = "五";
break;
case '6':
value = "六";
break;
case '7':
value = "七";
break;
case '8':
value = "八";
break;
case '9':
value = "九";
break;
}
return value;
}
public string ChinaNumber(string number)
{
string value = string.Empty;
switch (number[0])
{
case '1':
value = "";
break;
case '2':
value = "二";
break;
case '3':
value = "三";
break;
}
value += "十";
if(number[1]!='0')
{
value += ChinaNumber(number[1]);
}
return value;
}
}
}
复制代码
调用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
ChineseDate ch = new ChineseDate(2008, 10, 22);
string chd = ch.GetChineseDate();
Console.WriteLine(chd);
}
}
}
复制代码
结果:
作者:
李荣壮
时间:
2011-10-28 22:17
看着好复杂啊,为什么不用枚举呢,应该少很多行吧
作者:
李荣壮
时间:
2011-11-1 23:10
本帖最后由 李荣壮 于 2011-11-2 01:35 编辑
用枚举 写了一下,感觉这样代码少些,看着清楚些,就是不知道效率高不高,谁知道,请指正一下 ,不胜感激。
enum EnumOfCHS { 零, 一, 二, 三, 四, 五, 六, 七, 八, 九 } // 定义枚举:十个数字的汉字
// 传入数字日期,返回中文日期
public static string ToCHSDate(string date)
{
string chineseDate = string.Empty; //返回的中文日期( 局部变量必须初始化)
for (int i = 0; i < date.Length; i++) //遍历数字日期,判断是否为数字,并转换为中文表示
{
if (Char.IsDigit(date[i])) //判断数字日期中的数字
{
int value = Convert.ToInt32(date[i].ToString()); //把字符转换为数字,以便获取枚举中的常量
chineseDate += Enum.GetName(typeof(EnumOfCHS), value);//将数字转换为中文,并加入到中文日期中。
}
else
{
chineseDate += date[i].ToString(); //如果不是数字,直接加入到中文日期中
}
}
return chineseDate; //返回中文日期
}
}
复制代码
static void Main(string[] args)
{
string date = "2011年11月01日";
Console.WriteLine(ToCHSDate(date));
}
复制代码
作者:
朱勋
时间:
2011-11-2 09:00
学习了,收获很大
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2