本帖最后由 幻想领域 于 2012-10-28 01:51 编辑
前几天亚金发了这么一个帖子(http://bbs.itheima.com/thread-29154-1-1.html),问到把2012年10月10日转换成二零一二年十月十日的其他解法,当时我们把问题都想简单了。
后来罗代势同学提醒了我们,还需要验证平闰年和判断输入的日期是否合理。有问题,还请大家继续提出。
我连夜尝试做了一下,代码如下:- static void Main(string[] args)
- { Console.WriteLine("请输入一个日期");
- string dateTime = Console.ReadLine();
- string[] newDateTime = dateTime.Split(new string[] { "年","月","日" }, StringSplitOptions.RemoveEmptyEntries);
- //将输入的字符串按年月日分割,如2011年10月80日,则变成{2011,10,80}
- try
- {
- int year = int.Parse(newDateTime[0]);
- int month = int.Parse(newDateTime[1]);
- int day = int.Parse(newDateTime[2]);
- //声明数组,存放每月的天数,第一行存平年,第二行存闰年
- int[,] day_tabnew = new int[2, 13] { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, }, { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, } };
- int lp = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? 1 : 0;//*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
- if (day > day_tabnew[lp, month])//取出对应年月的天数,并与用户输入的天数做对比1
- {
- Console.WriteLine("不存在该日期");
- }
- else
- {
- //这里的可以用其他方法代替,我的写法是错的,求其他同学贴出自己的解法
- dateTime = dateTime.Replace("0", "零");
- dateTime = dateTime.Replace("1", "一");
- dateTime = dateTime.Replace("2", "二");
- dateTime = dateTime.Replace("3", "三");
- dateTime = dateTime.Replace("4", "四");
- dateTime = dateTime.Replace("5", "五");
- dateTime = dateTime.Replace("6", "六");
- dateTime = dateTime.Replace("7", "七");
- dateTime = dateTime.Replace("8", "八");
- dateTime = dateTime.Replace("9", "九");
- Console.WriteLine(dateTime);
- }
- }
- catch (Exception)
- {
- Console.WriteLine("请输入正确格式的日期,如2011年6月4日");
- }
- Console.ReadKey();
- }
复制代码 运行效果图:
1、实现了判断日期是否合理
2、实现了判断输入格式是否是日期
3、转换的的时候,出问题了,10应该转换成十,而不是一零(这里留给其他同学补充,我转换日期的写法是错的,应该再加入几个判断,其他转换日期的方法,亚金的帖子有)
看来代码真东西,不细心不行,本来以为很简单的问题,没想到还有隐藏的陷阱。 |