黑马程序员技术交流社区

标题: 怎样将01和02中的0在转换的时候也去掉啊 [打印本页]

作者: 邢秀兰    时间: 2012-11-10 23:01
标题: 怎样将01和02中的0在转换的时候也去掉啊
/用户输入一个“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();
作者: anyu    时间: 2012-11-11 11:51
我在下面判断了一下,但是感觉比较复杂,求简单方法?
        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();
作者: 欧玉斌    时间: 2012-11-12 23:46
本帖最后由 欧玉斌 于 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();
复制代码

作者: duanhuilin    时间: 2012-11-13 09:00
欧玉斌 发表于 2012-11-12 23:46
其实这题真不需要那么麻烦,个人想出两种方式,一:01转1可以通过字符串数组转int数组的方式(int不会有01 ...

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

第二种方法很简单,利用Datetime的格式化很简捷;第一种方法不好理解啊,是泛型把?
作者: 吴步兵    时间: 2012-11-13 22:18
  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();
复制代码
有亮点
作者: 韩俊    时间: 2012-11-16 22:09
String dateTime="2008-01-02";
String[]dateTimes=dateTime.split(new char[]{'-'},StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("{0}年{1}月{2}曰,dateTimes[0],dateTimes[1],dateTimes[2]);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2