【问题标题】:Formatting a nullable DateTime field in MVC [closed]在 MVC 中格式化可为空的 DateTime 字段 [关闭]
【发布时间】:2014-06-30 11:47:46
【问题描述】:

我正在尝试更改表中可为空的datetime 字段的格式,以便它以ddd dd mmm yyyy 的格式显示。我尝试过使用DateTime.ToString("ddd dd mmm yyyy)DateTime.Value.ToString("ddd dd mmm yyyy"),但都没有成功。

<td>
  @Html.DisplayFor(modelItem => item.DailyReportDate)
</td>

任何建议将不胜感激。

【问题讨论】:

  • “但都没有工作”没有帮助。预期输出是多少,实际输出是多少?
  • 这不是(“dddd, dd MMMM yyyy”)吗?而不是(“ddd dd mmm yyyy”)
  • "都没有用" - 请给出确切的问题。错误的价值观?没有价值观?编译时失败?请注意,m 表示分钟,而不是月份。也许你只是想要MMM?如果您在问题中解释了症状,我们就会知道...
  • 你为什么不直接做&lt;td&gt;@item.ToString("some format string")&lt;/td&gt;
  • 当我使用 ToSTring 方法时,它会给出错误“方法 ToSTring 有 0 个参数,但使用 1 个参数调用”。我认为这是因为它是一个可为空的 DateTime,而不是 DateTime,但我不知道如何解决这个问题

标签: c# asp.net-mvc model-view-controller


【解决方案1】:

这里的问题是DateTime? 没有接受格式化字​​符串的ToString() 方法。为了克服这个问题,您可以使用以下代码:

@string.Format("{0:ddd dd mmm yyyy}", item.DailyReportDate)

如果DailyReportDatenull,则此代码将呈现为空字符串。否则,您将获得格式化的日期时间。 Nullable.ToString Method documentation

中描述了这种行为

希望对您有所帮助。


不是完全你想要什么,但这可以帮助你。

如果你有一个简单的DateTime(不可为空),那么here 是一个很好的例子,说明如何完成你想要的。总而言之,您需要做的就是在您的属性上设置一个DisplayFormatAttribute 属性

public class Model {
    [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
    public DateTime? DailyReportDate { get; set;}
}

然后你可以像指出的那样使用它:

@Html.DisplayFor(item=> item.DailyReportDate)

您可以找到DisplayFormatAttribute here 的文档

【讨论】:

    【解决方案2】:

    .ToString() 总是提出“对象引用未设置为对象的实例”,因为此方法需要非空对象。你必须像这样使用 if else

    @if (modelItem => item.DailyReportDate != null)
    {
        //add format
    }
    else
     {
       @Html.DisplayFor(modelItem => item.DailyReportDate)item.Amount)
     }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2012-01-15
      • 2010-12-22
      • 2015-03-24
      相关资源
      最近更新 更多