【问题标题】:Parse string to DateType ASP.NET C# exception - The string was not recognized as a valid DateTime将字符串解析为 DateType ASP.NET C# 异常 - 该字符串未被识别为有效的 DateTime
【发布时间】:2018-03-06 15:29:05
【问题描述】:

所以我有一个采用这种格式的日期。我的目标是在此字符串startdate 上添加 7 天,并将其作为字符串发布到数据库中。但是,我必须将其转换为 datetime 以允许我添加天数。我正在从数据库中读取startdate,但这就是它的样子。

string startdate = "10-03-2018 03:15PM";

IFormatProvider culture = new CultureInfo("en-US", true);
DateTime starttime2 = DateTime.ParseExact(startdate, "MM/dd/yyyy HH:mm tt", culture); 

// 它在上面的行中出现错误 - 字符串未被识别为有效的日期时间。

DateTime endtime2 = starttime2.AddDays(+7);

谁能帮我解决这个问题?我是 C# 新手,如果有任何帮助,我将不胜感激..

谢谢

【问题讨论】:

  • “并将其作为字符串发布到数据库中” 下一个让我畏缩的问题
  • mm tt之间有空格...15PM没有空格
  • 我同意@TimSchmelter。为什么还要将日期保存为字符串?我知道的大多数数据库都有一个特殊的DATE 数据类型。
  • 抱歉,我的意思是说它已经是一个字符串,因为有一个 javascript 文本框函数,这就是为什么我需要将它转换为日期以添加我的日子。我不是想把它写成一个字符串,我的意思是 DateTime :)

标签: c# asp.net .net parsing


【解决方案1】:

您实际上指定了错误的格式。您应该指定以下格式:

"dd-MM-yyyy hh:mmtt"

因为您的日期格式为:

"10-03-2018 03:15PM"

假设我们的第一个数字是天数,第二个是月数,否则你可以交换它们。

您可以查看ParseExact here的使用详情。

【讨论】:

    【解决方案2】:

    试试这个:

        string startdate = "10-03-2018 03:15PM";
    
        IFormatProvider culture = new CultureInfo("en-US", true);
        DateTime starttime2 = DateTime.ParseExact(startdate, "dd-MM-yyyy hh:mmtt", culture);
    

    mm 和 tt 之间没有空格。这也是 12 小时格式,所以 hh

    【讨论】:

      【解决方案3】:

      我想这会对你有所帮助

          public static DateTime AddDaysToMyDate(string date)
          {
              return DateTime.ParseExact(date, "dd-MM-yyyy hh:mmtt", new CultureInfo("en-US", true)).AddDays(7);
          }
      

      把它当作

      DateTime newDateTime = AddDaysToMyDate("10-03-2018 03:15PM");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-17
        • 1970-01-01
        • 1970-01-01
        • 2022-06-16
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        相关资源
        最近更新 更多