黑马程序员技术交流社区

标题: 关于刚才做基础题的问题。 [打印本页]

作者: 白白胖胖    时间: 2014-3-20 16:12
标题: 关于刚才做基础题的问题。
题目就是:将一段文本中的。MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式 ,比如“我的生日是05/21/2010耶”转换为“我的生日是2010-05-21耶”。
这道题实在是不会了,上网上找也不知道该从何入手,又是字符串又是数字的。怎么弄?
作者: mdb    时间: 2014-3-20 16:23
可以使用正则表达式将年月日抽取出来然后再重新排格式。
作者: threederek    时间: 2014-3-20 17:03
  1. DateTime date = DateTime.Now.Date;
  2.             Console.WriteLine(date);
  3.             Console.WriteLine(date.ToString("yyyy-MM-dd"));
复制代码

作者: 白夜行    时间: 2014-3-20 17:10
你可以先把需要转换格式的那段字符串截取出来,用一个字符串数组分别接受年月日,然后用“-”拼接,最后放回原字符串就可以了,下面是代码,方法多种多样,如果不用正则的话应该还有更简单的办法
  1. static void Main(string[] args)
  2.         {
  3.             string str = "我的生日是05/21/2010耶";
  4.             string birthday_1 = str.Substring(5,10);

  5.             string[] s = new string[3];

  6.             s[0] = birthday_1.Substring(6,4);
  7.             s[1] = birthday_1.Substring(0,2);
  8.             s[2] = birthday_1.Substring(3,2);
  9.             
  10.             string birthday_2;
  11.             birthday_2 = string.Join("-",s);

  12.             str = str.Replace(birthday_1, birthday_2);

  13.             Console.WriteLine(str);
  14.             Console.ReadKey();
  15.         }
复制代码

作者: shangxin    时间: 2014-3-20 17:50
dateString = "2011/4/8 0:00:00";
string format = "yyyy-mm-dd";
DateTime result = DateTime.ParseExact(dateString, format, null);
作者: 白白胖胖    时间: 2014-3-21 16:06
mdb 发表于 2014-3-20 16:23
可以使用正则表达式将年月日抽取出来然后再重新排格式。

我刚刚学习呀,虽然知道正则表达式是什么,但是。。新手。。。
作者: zou5268237    时间: 2014-3-21 16:07
本帖最后由 zou5268237 于 2014-3-21 16:28 编辑
  1.             string s = "我的生日是05/21/2010耶";
  2.             string strDate = s.Substring(5, 10);
  3.             DateTime dt = DateTime.ParseExact(strDate, "MM/dd/yyyy", null);
  4.             strDate = dt.ToString("yyyy-MM-dd");
  5.             s = s.Substring(0, 5) + strDate + s.Substring(15, 1);
复制代码
先把字符串中的日期部分提取出来,然后转换为DateTime格式再格式化为你想要的格式。

作者: 白白胖胖    时间: 2014-3-21 16:08
白夜行 发表于 2014-3-20 17:10
你可以先把需要转换格式的那段字符串截取出来,用一个字符串数组分别接受年月日,然后用“-”拼接,最后放 ...

谢了!才知道截取字符串怎么截取,谢谢了。
作者: 南天鹤    时间: 2014-3-26 20:13
static void Main(string[] args)
        {
            string str = "05/21/2010";
            string year = str.Substring(6, 4);
            string month = str.Substring(0, 2);
            string day = str.Substring(3, 2);
            Console.WriteLine("我的生日是{0}-{1}-{2}", year, month, day);
            Console.ReadKey();
        }
作者: ♠Akechi♠    时间: 2014-3-26 21:44
支持2楼,字符串格式化就可以了,ToString("YYYY-mm-DD")
作者: 范永久    时间: 2014-3-30 13:51
class Program
    {
        //将一段文本中的。MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式 ,
        //比如“我的生日是05/21/2010耶”转换为“我的生日是2010-05-21耶”。
        static void Main(string[] args)
        {
            Console.WriteLine("请输入你的出生日期,格式为MM/DD/YYYY");
            string s = Console.ReadLine();
            Console.WriteLine("转换后为:");
            Console.WriteLine(DateChange(s));
            Console.ReadKey();
        }
        /// <summary>
        /// MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string DateChange(string str)
        {
            int first = str.IndexOf('/');//获得第一个'/'所在字符串当中的索引,是为了接下来获得月份的索引
            string newStr = str.Substring(first - 2, 10);//把日期截取出来
            string[] strs = newStr.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);//把日期拆成包含年月日三个元素的数组
            string s = strs[2] + "-" + strs[0] + "-" + strs[1];//转换成2010-05-21样式
            str = str.Replace(newStr, s);//把05/21/2010替换成2010-05-21
            return str;
        }
    }


作者: 墨蹄    时间: 2014-3-30 14:32
如果用正则表达式
            string str = Regex.Replace(msg,@"\/","-");
这样就替换点了,12楼了 还有分么:)




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