A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邢秀兰 中级黑马   /  2012-11-10 23:01  /  2259 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/用户输入一个“2008-01-02”格式的日期,分析用户输入的日期然后按照“2008年1月2日”的格式重新输出e
        static void Main(string[] args)
        {   //提示用户要输入的日期格式
            Console.WriteLine("请输入日期格式:例如2008-01-02");
            //把用户输入的值,赋给字符串变量t
            string t = Console.ReadLine();
            //这句不太理解它的作用
            string[] t1 = t.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine(string.Format("{0}年{1}月{2}日",t1[0],t1[1],t1[2]));
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

6 个回复

倒序浏览
我在下面判断了一下,但是感觉比较复杂,求简单方法?
        string s="",r="";
            Console.WriteLine("请输入日期格式:例如2008-01-02");
            string t = Console.ReadLine();
            string[] t1 = t.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
            if (Convert.ToInt32(t1[1]) < 10)
            {
                s = t1[1].Substring(1, 1);
            }
            else
            {
                s = t1[1];
            }
            if (Convert.ToInt32(t1[2]) < 10)
            {
                r = t1[2].Substring(1, 1);
            }
            else
            {
                r = t1[2];
            }

            Console.WriteLine(string.Format("{0}年{1}月{2}日", t1[0], s, r));
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 欧玉斌 于 2012-11-13 11:22 编辑
anyu 发表于 2012-11-11 11:51
我在下面判断了一下,但是感觉比较复杂,求简单方法?
        string s="",r="";
            Console.Wri ...

其实这题真不需要那么麻烦,个人想出两种方式,一:01转1可以通过字符串数组转int数组的方式(int不会有01,而变成了1)
int[] intDateTime = Array.ConvertAll<string, int>(newDateTime, delegate(string s) { return int.Parse(s); });
  1. Console.WriteLine("请输入日期,如“2008-01-02”");
  2.             //获取用户输入内容
  3.             string dateTime = Console.ReadLine();
  4.             //按"-"分割字符串
  5.             string[] newDateTime = dateTime.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
  6.             //把String数组转换为Int数组,数组各值将变为int类型,如01转化为1
  7.             int[] intDateTime = Array.ConvertAll<string, int>(newDateTime, delegate(string s) { return int.Parse(s); });
  8.             //如果int数组长度等于3,则按预定格式输出,否则提示错误
  9.             if (intDateTime.Length == 3)
  10.             {   //输出预设格式的时间
  11.                 Console.WriteLine("{0}年{1}月{2}日", intDateTime[0], intDateTime[1], intDateTime[2]);
  12.             }
  13.             else
  14.             {
  15.                 Console.WriteLine("输入的日期格式错误");
  16.             }
  17.             Console.ReadKey();
复制代码
二、利用datetime转换用户输入的时间,并按yyyy年M月d日格式输出时间。
datetime 的方便性在于,可以验证要转换的字符串是否是合法的日期格式,如月份不能大于12,平年2月份日期不能大于28,如果转换失败,则catch异常
Console.WriteLine(dt.ToString("yyyy年M月d日"));//输出
  1. Console.WriteLine("请输入日期,如“2008-01-02”");
  2.             //获取用户输入内容
  3.             string dateTime = Console.ReadLine();
  4.             try
  5.             {
  6.                 //将输入的字符串转为DateTime类型,转换时可以判断输入的是否是合法的时间格式
  7.                 DateTime dt = DateTime.Parse(dateTime);
  8.                 Console.WriteLine(dt.ToString("yyyy年M月d日"));//输出
  9.             }
  10.             catch (Exception)
  11.             {
  12.                 Console.WriteLine("输入的时间格式错误");
  13.             }
  14.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
欧玉斌 发表于 2012-11-12 23:46
其实这题真不需要那么麻烦,个人想出两种方式,一:01转1可以通过字符串数组转int数组的方式(int不会有01 ...

发现你真是个有才的家伙!向你学习!
回复 使用道具 举报
欧玉斌 发表于 2012-11-12 23:46
其实这题真不需要那么麻烦,个人想出两种方式,一:01转1可以通过字符串数组转int数组的方式(int不会有01 ...

第二种方法很简单,利用Datetime的格式化很简捷;第一种方法不好理解啊,是泛型把?
回复 使用道具 举报
  1. Console.WriteLine("请输入日期,如“2008-01-02”");
  2.             //获取用户输入内容
  3.             string dateTime = Console.ReadLine();
  4.             //按"-"分割字符串
  5.             string[] newDateTime = dateTime.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
  6.             //把String数组转换为Int数组,数组各值将变为int类型,如01转化为1
  7.             int[] intDateTime = Array.ConvertAll<string, int>(newDateTime, delegate(string s) { return int.Parse(s); });
  8.             //如果int数组长度等于3,则按预定格式输出,否则提示错误
  9.             if (intDateTime.Length == 3)
  10.             {   //输出预设格式的时间
  11.                 Console.WriteLine("{0}年{1}月{2}日", intDateTime[0], intDateTime[1], intDateTime[2]);
  12.             }
  13.             else
  14.             {
  15.                 Console.WriteLine("输入的日期格式错误");
  16.             }
  17.             Console.ReadKey();
复制代码
有亮点

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
韩俊 中级黑马 2012-11-16 22:09:56
7#
String dateTime="2008-01-02";
String[]dateTimes=dateTime.split(new char[]{'-'},StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("{0}年{1}月{2}曰,dateTimes[0],dateTimes[1],dateTimes[2]);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马