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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白白胖胖 中级黑马   /  2014-3-20 16:12  /  2069 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目就是:将一段文本中的。MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式 ,比如“我的生日是05/21/2010耶”转换为“我的生日是2010-05-21耶”。
这道题实在是不会了,上网上找也不知道该从何入手,又是字符串又是数字的。怎么弄?

评分

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

查看全部评分

11 个回复

倒序浏览
可以使用正则表达式将年月日抽取出来然后再重新排格式。
回复 使用道具 举报
  1. DateTime date = DateTime.Now.Date;
  2.             Console.WriteLine(date);
  3.             Console.WriteLine(date.ToString("yyyy-MM-dd"));
复制代码
回复 使用道具 举报
你可以先把需要转换格式的那段字符串截取出来,用一个字符串数组分别接受年月日,然后用“-”拼接,最后放回原字符串就可以了,下面是代码,方法多种多样,如果不用正则的话应该还有更简单的办法
  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.         }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
dateString = "2011/4/8 0:00:00";
string format = "yyyy-mm-dd";
DateTime result = DateTime.ParseExact(dateString, format, null);
回复 使用道具 举报
mdb 发表于 2014-3-20 16:23
可以使用正则表达式将年月日抽取出来然后再重新排格式。

我刚刚学习呀,虽然知道正则表达式是什么,但是。。新手。。。
回复 使用道具 举报
本帖最后由 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格式再格式化为你想要的格式。

评分

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

查看全部评分

回复 使用道具 举报
白夜行 发表于 2014-3-20 17:10
你可以先把需要转换格式的那段字符串截取出来,用一个字符串数组分别接受年月日,然后用“-”拼接,最后放 ...

谢了!才知道截取字符串怎么截取,谢谢了。
回复 使用道具 举报
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();
        }
回复 使用道具 举报
支持2楼,字符串格式化就可以了,ToString("YYYY-mm-DD")
回复 使用道具 举报
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;
        }
    }

评分

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

查看全部评分

回复 使用道具 举报
如果用正则表达式
            string str = Regex.Replace(msg,@"\/","-");
这样就替换点了,12楼了 还有分么:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马