模型中的MVC 5格式日期时间

时间:2014-08-15 07:37:21

标签: c# asp.net-mvc datetime

我的数据库中有几个DateTime字段。 Normaly我刚刚在我的模型中创建了这个:

[Display(Name = "Downtime start")]
public DateTime? Downtime_start { get; set; }

注意:它必须是可以为空的。

所以这很好用。但问题是,它还显示了无处不在的秒数,这是令人讨厌的。

所以我不能通过在我的模型中进行一些解析来解决这个问题吗?像这样的东西?

private string Parsed_Downtime_start;

[Display(Name = "Downtime_start")]
public DateTime? Downtime_start
{
    get 
    {
        if (Parsed_Downtime_start != null)
        {
            return DateTime.Parse(Parsed_Downtime_start);
        }
        else 
        {
            return null;
        }

    }
    set 
    {
        if (value != null)
        {
            Parsed_Downtime_start = value.Value.ToString("MM/dd/yyyy hh:mm tt");
        }
        else
        {
            Parsed_Downtime_start = null;
        }

    }
}

这并没有真正改变任何事情。但是,如果我以另一种方式执行此操作并将其作为字符串保存到DB并将其解析为DateTime,它可以正常工作。但我真的不想将DB中的DateTimes保存为字符串。

3 个答案:

答案 0 :(得分:5)

尝试使用

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

适用于 EditorFor DisplayFor 帮助

答案 1 :(得分:0)

使用此属性时

Convert.ToDateTime(Downtime_start).ToLongDateString()

应该允许反转(保存到数据库),包括小时,秒和分钟。

答案 2 :(得分:0)

由于我不得不使用Javascript Datetimepciker插件来解决这个问题,因此解决了这个问题。 (https://github.com/xdan/datetimepicker)格式必须非常特别。

所以我最终创建了一个辅助方法。

namespace MvcHtmlHelpers
{
    public static class MvcHtmlHelpers
    {
        public static string ToString(this DateTime inputDate, bool FixTime)
        {
            if (FixTime)
            {
                string returnString;

                if (inputDate == DateTime.MinValue)
                {
                    returnString = "N/A";
                }
                else
                {
                    returnString = inputDate.ToShortDateString() + ' ' + inputDate.ToShortTimeString();
                }
                return returnString;
            }
            return inputDate.ToString();
        }
    }
}

我的表单有一个“查看阶段”和一个“编辑模式阶段”,由编辑按钮控制。 我正在重叠.Value.ToString(true)方法,以使用辅助方法正确格式化日期。

<section class="col col-4">
    <label class="label">@Html.DisplayNameFor(model => model.Downtime_start)</label>
    <label class="input edit-case">
        <i class="icon-append fa fa-calendar"></i>
        <input type="text" id="Downtime_start" value="@Model.Downtime_start.Value.ToString(true)">
    </label>
    <label class="input state-disabled view-case">
        <i class="icon-append fa fa-calendar"></i>
        <input type="text" id="lbl_Downtime_start" disabled="disabled" value="@Model.Downtime_start.Value.ToString(true)">
    </label>
</section>
相关问题