【问题标题】:No overload for method 'ToString" takes 1 arguments when casting date转换日期时,方法“ToString”没有重载需要 1 个参数
【发布时间】:2023-04-06 04:11:01
【问题描述】:

我正在尝试将我的 Angular ui-Datepicker 中的日期保存到我的 SQL 数据库中。日期格式为 (10-27-2015 12:00 AM),但不会保存。我尝试使用以下方法将其转换为 SQL DateTime 格式:

    DateTime? myDate = form.dteStartDate;
    string sqlFormattedDate = myDate.ToString("yyyy-MM-dd HH:mm:ss");

但我收到错误“方法 'ToString' 没有重载需要 1 个参数。SQL 中的字段类型为 'datetime'。

非常感谢任何帮助。

【问题讨论】:

  • 正如您的回答所说,myDate 不是DateTime,它是Nullable<DateTime>,所以当您调用ToString 时,它会在Nullable<T> 类型上调用它,而不是@987654327 @.

标签: c# .net angularjs datetime


【解决方案1】:

最直接的方法是写:

DateTime? myDate = form.dteStartDate;    
string sqlFormattedDate = myDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A";

添加? myDate 之后将检查它是否不为空,并使用 ??您将处理变量为空的情况。

【讨论】:

    【解决方案2】:

    另一种方法是在“myDate”变量后面添加问号。

    DateTime? myDate = form.dteStartDate;
    string sqlFormattedDate = myDate?.ToString("yyyy-MM-dd HH:mm:ss");
    

    【讨论】:

      【解决方案3】:
       string sqlFormattedDate = ((DateTime)myDate).ToString("yyyy-MM-dd HH:mm:ss");
      

      此外,如果您可以在.cshtml 中使用服务器端代码并​​按如下方式管理此转换(例如):

         <label>Establish: @(((DateTime)Model.EstablishDate).ToString("yyyy-MM-dd"))</label>
      

      【讨论】:

        【解决方案4】:

        它会正常工作的。

        DateTime? strDate = form.dteStartDate;
        strDate.Value.ToString("yyyy-MM-dd HH:mm tt");
        

        【讨论】:

          【解决方案5】:

          您想使用DateTime.ToString(format) 而不是Nullable&lt;DateTime&gt;.ToString(no overload)

          DateTime? myDate = form.dteStartDate;
          string sqlFormattedDate = myDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
          

          当然这不处理没有价值的情况。也许是这样的:

          string sqlFormattedDate = myDate.HasValue 
              ? myDate.Value.ToString("yyyy-MM-dd HH:mm:ss")
              : "<not available>";
          

          【讨论】:

          • myDate.Value.HasValue 将返回错误。应该是 myDate.HasValue 吗? startDate.Value.ToString("yyyy-MM-dd HH:mm:ss")
          • 如果您可以在幕后进行一些装箱操作,并且如果您希望在myDate 为空的情况下使用空字符串,那么string sqlFormattedDate = $"{myDate:yyyy-MM-dd HH:mm:ss}"; 可以使用简短的语法。需要 C# 6(内插字符串)。通过将包装的 DateTime 装箱到 object 引用在内部工作。如果它变成空引用,则使用空字符串。否则,确认盒子的运行时类型实现IFormattable,并使用该接口的相关ToString重载。
          • 我在调查解决方案中遇到了同样的问题,但添加 .Value 解决了我的问题。非常感谢
          猜你喜欢
          • 2021-11-04
          • 2012-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多