日期时间的 DataFormatString

Posted

技术标签:

【中文标题】日期时间的 DataFormatString【英文标题】:DataFormatString for DateTime 【发布时间】:2013-08-26 22:32:26 【问题描述】:

我正在尝试在 DateTime 属性中应用格式,但它不起作用。我有这个:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "dd/MM/yyyy", ApplyFormatInEditMode = true)]
public DateTime DataInscricao  get; set; 

我尝试了多种方式(更改 DataFormatString),但没有一个有效。我还在为我的日期字段使用日期选择器。

我也尝试从 jQuery 应用格式:

$("#DataInscricao").datepicker( dateFormat: 'dd-mm-yy');

它几乎可以工作,格式应用于文本框,但是当我尝试保存时,日期格式丢失了。如果我输入像 12/01/2013 这样的日期,它会更改为 01/01/0001。在 GridView 中格式不同(mm-dd-yyyy)并且 TextBox 的掩码工作错误。

我真的不知道该怎么做才能让它工作。有人可以帮我解决这个问题吗?

谢谢!

更新

这是控制器中返回要编辑的实体的方法。

public ActionResult Editar(int id)

    var agendamento = _repository.GetSingle(a => a.Id == id);
    return View("Criar", agendamento);

这是视图:

@model PNCQ2013.Domain.Entities.AgendamentoManutencao
@
    ViewBag.Title = PNCQ2013.Domain.Resources.ItemPatrimonio.ItemPatrimonio.TitleAgendamento + " :: PNCQ - Programa Nacional de Controle de Qualidade";
    Layout = "~/Views/Shared/_Layout.cshtml";


<div class="section">
@using (Ajax.BeginForm("Salvar", "ManutencaoPreventiva", null, new AjaxOptions  HttpMethod = "POST", LoadingElementId = "loading" , new  @class = "formee", @id = "frmAgendamentoManutencao", enctype = "multipart/form-data" ))

    @Html.HiddenFor(m => m.Id)
    <div class="box">
        <div class="title">
            @PNCQ2013.Domain.Resources.ItemPatrimonio.ItemPatrimonio.TitleAgendamento
        </div>
        <div class="content nopadding">
            <div class="grid-4-12">
                @Html.LabelFor(m => m.ItemPatrimonioId)
                @Html.DropDownListFor(m => m.ItemPatrimonioId, new SelectList(PNCQ2013.Web.Content.Helpers.Util.ListaItemPratrimonio().OrderBy(a => a.NumeroPatrimonio), "Id", "NumeroPatrimonio"), Resources.Geral.Selecione)
                @Html.ValidationMessageFor(m => m.ItemPatrimonioId)
            </div>
            <div class="grid-4-12">
                @Html.LabelFor(m => m.DataInscricao)
                @Html.TextBoxFor(m => m.DataInscricao, new  @class = "datepicker" )
                @Html.ValidationMessageFor(m => m.DataInscricao)
            </div>
            <div class="grid-4-12">
                @Html.LabelFor(m => m.FrequenciaManutencaoId)
                @Html.DropDownListFor(m => m.FrequenciaManutencaoId, PNCQ2013.Web.Content.Helpers.HtmlExtensions.ToSelectList(typeof(PNCQ2013.Domain.Enumerators.FrequenciaManutencao), ""), Resources.Geral.Selecione)
                @Html.ValidationMessageFor(m => m.FrequenciaManutencaoId)
            </div>
        </div>
    </div>

【问题讨论】:

听起来从TextBox 中的字符串分配日期到DateTime 时出现问题,而不是格式问题,您可能希望将其设置为格式问题比如 2013 年 1 月 12 日。你能发布视图和控制器代码吗? 【参考方案1】:

这样试试,

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "0:dd/MM/yyyy", ApplyFormatInEditMode = true)]
public DateTime DataInscricao  get; set; 

【讨论】:

@Sravan,这不适用于编辑/创建视图。

以上是关于日期时间的 DataFormatString的主要内容,如果未能解决你的问题,请参考以下文章

将所有出现的日期时间更新为该日期的最低日期时间值

日期和时间(10)

提取身份证出生日期,分离日期时间的日期和时间

Mysql按日期时间的日期部分分组,并为每个日期选择具有最大日期时间的行

SQL中TIMESTAMPDIFF()计算两个时间日期的时间差DATE_SUB()计算某个日期前的具体日期时间DATE_ADD()计算某个日期后的具体日期时间对日期进行加减操作解析

java输入的日期与当前的日期做比较?