首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型中的MVC 5格式Datetime

模型中的MVC 5格式Datetime
EN

Stack Overflow用户
提问于 2014-08-15 15:37:21
回答 3查看 17.1K关注 0票数 0

我的数据库中有几个DateTime字段。正常情况下,我刚刚在我的模型中创建了如下代码:

代码语言:javascript
复制
[Display(Name = "Downtime start")]
public DateTime? Downtime_start { get; set; }

注意:它必须是可空的。

所以这很好用。但问题是,它还到处显示秒,这有点恼人。

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

代码语言:javascript
复制
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,则可以很好地工作。但我并不是真的想将DateTimes作为字符串保存在数据库中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-01 19:43:16

这个问题的解决方案变得有点复杂,因为我必须让它与Javascript Datetimepciker插件一起工作。(https://github.com/xdan/datetimepicker),并且格式必须非常具体。

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

代码语言:javascript
复制
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)方法来使用helper方法来正确地格式化日期。

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2014-08-15 15:43:02

试着使用

代码语言:javascript
复制
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

它适用于EditorForDisplayFor帮助器

票数 6
EN

Stack Overflow用户

发布于 2014-08-15 15:45:28

当您使用此属性时

代码语言:javascript
复制
Convert.ToDateTime(Downtime_start).ToLongDateString()

反转(保存到db)应允许小时、秒和分钟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25322803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档