【问题标题】:Split string on basis of "/"根据“/”拆分字符串
【发布时间】:2018-05-12 18:39:55
【问题描述】:

我有一个字符串:

string s = "1/09/2017 12:00:00 AM"; 

我要显示的输出是 1/09/17(基本上是短日期)。

如果

string s ="30/09/2017 12:00:00 AM"

我想显示的输出是 30/09/17(基本上是短日期)。

我试过的是:

string[] values = s.Split('/');
string a = values[0]+"/"+values[1]+"/"+values[2].

我很困惑如何获得第三部分需要帮助。

【问题讨论】:

  • s.Split(" ")[0]

标签: c# string date split


【解决方案1】:

我的建议是使用内置日期数据类型。 如果这不符合您的要求,那么我建议您根据分隔符“”(空格)拆分字符串。然后选择第一部分并继续执行您的代码。

【讨论】:

    【解决方案2】:

    使用 .NET 内置的 DateTime 解析。

    例如:

    string s = "1/09/2017 12:00:00 AM";
    string format = "d/MM/yyyy hh:mm:ss tt";
    DateTime parsedDateTime = DateTime.ParseExact(s, format, null);
    string output = parsedDateTime.ToString("d/MM/yy"); //output = 1/09/17
    

    更多信息:

    【讨论】:

    • 这并没有给出 OP 想要的答案。
    • Op 想要一个两位数的年份作为输出
    【解决方案3】:

    你可以使用这样的子字符串

    string s = "30/09/2017 12:00:00 AM";
    
            string[] values = s.Split('/');
            string a = values[0] + "/" + values[1] + "/" + values[2].Substring(2,2);
    

    【讨论】:

    • .Substring(2,3) 应该是 .Substring(2,2)
    【解决方案4】:
    DateTime date = DateTime.ParseExact("1/09/2017 12:00:00 AM", "d/MM/yyyy hh:mm:ss tt", null);
    Console.WriteLine(date.ToString("d/MM/yy"));
    

    将你的日期字符串转换为DateTime,然后使用ToString重载方法方法,参数Format请找Fiddle

    【讨论】:

      【解决方案5】:

      加入保罗的回答

                  string s = "1/09/2017 12:00:00 AM";
                  string format = "d/MM/yyyy hh:mm:ss tt";
                  DateTime parsedDateTime = DateTime.ParseExact(s, format, null);
                  string output = parsedDateTime.ToString("d/MM/yy");
                  string ss = output.Replace("-","/");
                  Console.Write(ss); //output is 1/09/17
      

      这将完全返回确切的预期输出

      【讨论】: