public static string dateConvert(string cDate)
{
string aDate;//定义一个字符串为返回值 阿拉伯数字日期
//定义字符数组存储中国数字写法
char[] cNumber = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十' };
//定义字符数组存储对应的阿拉伯数字写法 由于没有‘十’,所以‘十’暂时用‘*’标记
char[] aNumber = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*' };
//得到参数用年月日切分为三段放假字符串数组
string[] cNum = cDate.Split(new string[] { "年", "月", "日" }, StringSplitOptions.RemoveEmptyEntries);
//将第一段字符串,即年切分成字符数组
char[] dateYear = cNum[0].ToArray();
string dateY = ""; //定义一个字符串接收数字年
for (int i = 0; i < dateYear.Length; i++) //遍历每一位年份汉字
{
for (int j = 0; j < cNumber.Length; j++) //遍历每一种中文数字写法
{
if (cNumber[j] == dateYear) //如果写法相同,则将相应的阿拉伯数字写法赋值给dateY
{
dateY += aNumber[j];
}
}
}
//*,*2
char[] dateMonth = cNum[1].ToArray(); //将第二段字符串,即年切分成字符数组
char[] dateM = new char[2]; //创建一个月份缓冲遍历,记录被切分的中文月份
for (int i = 0; i < dateMonth.Length; i++) //同年份
{
for (int j = 0; j < cNumber.Length; j++)
{
if (cNumber[j] == dateMonth)
{
dateM = aNumber[j];
}
}
}
//月份不同于年,会出现‘十’,分别有两种情况
if (dateM[0] == '*' && dateM[1] == '\0') //1 如果为‘十’月
{
dateM[0] = '1'; //将第一位改为1,第二位改为2
dateM[1] = '0';
}
else if(dateM[0] == '*' && dateM[1] != '\0') //2 如果为 '十'一月
{
dateM[0] = '1'; //将一位改为1
}
StringBuilder sbMonth = new StringBuilder(); //创建一个字符串拼接月份数字
sbMonth.Append(dateM[0]);
sbMonth.Append(dateM[1]);
//*,*2,2*,2*1
char[] dateDays = cNum[2].ToArray(); //日期同月份
char[] dateD = new char[3];
for (int i = 0; i < dateDays.Length; i++)
{
for (int j = 0; j < cNumber.Length; j++)
{
if (cNumber[j] == dateDays)
{
dateD = aNumber[j];
}
}
}
//日会出现'十'的四种情况
if (dateD[0] == '*' && dateD[1] == '\0' && dateD[2] == '\0') // 1 '* '
{
dateD[0] = '1';
dateD[1] = '0';
}
else if (dateD[0] == '*' && dateD[1] != '\0' && dateD[2] == '\0')//2 ‘*2 '
{
dateD[0] = '1';
}
else if (dateD[0] != '\0' && dateD[1] == '*' && dateD[2] == '\0')//3 '2* '
{
dateD[1] = '0';
}
else if (dateD[0] != '\0' && dateD[1] == '*' && dateD[2] != '\0')//4 '2*1'
{
dateD[1] = dateD[2];
dateD[2] = '\0';
}
StringBuilder sbDays = new StringBuilder(); //创建一个字符串拼接日期数字
sbDays.Append(dateD[0]);
sbDays.Append(dateD[1]);
sbDays.Append(dateD[2]);
aDate = dateY + '-' + sbMonth + '-' + sbDays;//拼接阿拉伯数字年份
aDate = aDate.Replace("\0", ""); //由于拼接问题,去除"\0"
return aDate;
}
水平太差了 随意写了一大串东西,求大神写个简易版
|