【问题标题】:String not valid as a datetime string - Convert "yyyyMMdd" to datetime [closed]字符串作为日期时间字符串无效 - 将“yyyyMMdd”转换为日期时间 [关闭]
【发布时间】:2013-06-28 14:41:04
【问题描述】:

我有“yyyyMMdd”格式的字符串。 我想将它们转换为 DateTime 格式,但我收到一条错误消息,指出该字符串作为 DateTime 字符串无效。 我该怎么做?

【问题讨论】:

标签: c# datetime


【解决方案1】:

使用DateTime.ParseExact 指定格式和不变的文化:

var date = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture);

【讨论】:

    【解决方案2】:

    试试DateTime.TryParseExact

    DateTime dt;
    
    DateTime.TryParseExact(textBox.Text, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
    

    【讨论】:

      【解决方案3】:

      使用DateTime.ParseExact:

      string dateString = "20130701";
      DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", null, DateTimeStyles.None);
      

      【讨论】:

        【解决方案4】:

        这个问题之前已经被问过和回答过。但这里是一个工作代码的例子:

        string DateString = "20130701";
        DateTime DT = DateTime.ParseExact(DateString, "yyyyMMdd", CultureInfo.InvariantCulture);
        

        CultureInfo.InvariantCulture 是 System.Globalization 命名空间的一部分。 http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.71).aspx

        【讨论】:

          【解决方案5】:

          将它们分解为 DateTime.Parse 将接受为有效的格式。您甚至可以使用正则表达式来解析信息

          Regex format = new Regex("(?<year>^[0-9]{4})(?<month>[0-9]{2})(?<day>[0-9]{2})");
          Match m = format.Match(inputString);
          int year = int.Parse(m.Groups["year"].Value;
          int month = int.Parse(m.Groups["month"].Value;
          int day = int.Parse(m.Groups["day"].Value;
          DateTime date = new DateTime(year, month, day);
          

          【讨论】:

            猜你喜欢
            • 2012-01-02
            • 2015-09-17
            • 2012-02-18
            • 1970-01-01
            • 2022-08-18
            • 2020-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多