在Asp.NET MVC中以dd/mm/yyyy格式显示DateTime值

82

是否可以使用HTML Helper方法在Asp.NET MVC中以dd/mm/yyyy格式显示DateTime值?我尝试通过在@Html.LabelFor中使用一些格式,并向相关属性添加一些注释来实现此操作,但这没有任何意义。感谢您提供帮助解决此问题。

模型:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> RegistrationDate { get; set; }
8个回答

87

您所要做的就是在html助手调用中应用您想要的格式,例如:

@Html.TextBoxFor(m => m.RegistrationDate, "{0:dd/MM/yyyy}")

您不需要在模型类中提供日期格式。


7
如果您关心区域格式,可以尝试使用“{0:d}”。 - frictionlesspulley
1
这不会有任何作用,这是Google Chrome本身的问题。如果您在IE Windows中运行页面,您将无法看到日期选择器。 - SAR
每一页都需要进行格式化!任何全局控制都将不胜感激! - Khalid Bin Sarower
每一页都需要进行格式设置!任何全局控制都将受到赞赏! - undefined

65
几个小时的搜寻后,我只用了几行代码就解决了这个问题。 你的模型
      [Required(ErrorMessage = "Enter the issued date.")]
      [DataType(DataType.Date)]
      public DateTime IssueDate { get; set; }

剃刀页面

     @Html.TextBoxFor(model => model.IssueDate)
     @Html.ValidationMessageFor(model => model.IssueDate)

Jquery日期选择器

<script type="text/javascript">
    $(document).ready(function () {
        $('#IssueDate').datepicker({
            dateFormat: "dd/mm/yy",
            showStatus: true,
            showWeeks: true,
            currentText: 'Now',
            autoSize: true,
            gotoCurrent: true,
            showAnim: 'blind',
            highlightWeek: true
        });
    });
</script>

Webconfig文件

    <system.web>
        <globalization uiCulture="en" culture="en-GB"/>
    </system.web>

现在你的文本框将会接受 "dd/MM/yyyy" 格式。


1
谢谢,伙计。我一直在做除了 web.config 之外的所有事情,但是当我把你的 web.config 行添加到我的文件中时,它完美地工作了。 - Ehsan Sajjad
2
我尝试了你说的所有方法,但它在一个点上一直失败。我猜测你没有激活不显眼的jQuery,因为如果你有,它会抛出验证错误,说该字段不是有效日期(尝试像31/01/2014这样的日期,BCB 1月31日)。试试看,告诉我你是否有同样的问题。谢谢。 - Yogurtu
我刚刚添加了WebConfig部分,这已足以解决问题 - MVC5 Helpers允许您指定日期格式,因此可见显示不是问题 - 我卡在一个包含AU/GB日期的隐藏字段上。 - Rob
尝试了但不起作用,模型已设置,重新构建,脚本已包含在create视图中,视图为((@Html.TextBoxFor(model => model.startDate,new { htmlAttributes = new { @class = "datepicker" } })))... 仍然在IE8到IE11中无效。 - SAR
这个答案对我有用,但是dateFormat没有起作用,最后我意识到我正在使用Bootstrap日期选择器,它的属性是不同的,在这里有详细信息。 - Furkan Ekinci

12

我知道这是一个较旧的问题,但为了参考,一种在没有任何数据注释或其他设置的情况下格式化日期的非常简单的方法如下:

@Html.TextBoxFor(m => m.StartDate, new { @Value = Model.StartDate.ToString("dd-MMM-yyyy") })

上述格式当然可以根据需要进行更改。


当服务器期望日期时间格式,而您提交了一些格式化的字符串时,您该如何解决提交的格式问题? - Muflix
@David 这救了我整整一周 :) - Ninja
1
@Muflix 你需要将StartDate类型设置为DateTime,mvc会自动将其转换为DateTime。 - Ninja

10

由于问题是“显示”:

@Html.ValueFor(model => model.RegistrationDate, "{0:dd/MM/yyyy}")

7

或者直接在您的视图(Razor页面)中使用以下代码:

@item.ResgistrationhaseDate.ToString(string.Format("dd/MM/yyyy"))

我建议不要在你的模型类中添加日期格式。


被低估的解决方案 - Eduard

3

您需要使用HTML助手,并且不需要在模型类中提供日期格式。例如:

@Html.TextBoxFor(m => m.ResgistrationhaseDate, "{0:dd/MM/yyyy}")

2

也许在2019年回答这个问题已经太晚了,但是我尝试了所有的答案,没有一个适用于我。所以我简单地解决了这个问题:

@Html.EditorFor(m => m.SellDateForInstallment, "{0:dd/MM/yyyy}", 
               new {htmlAttributes = new { @class = "form-control", @type = "date" } })

EditorFor 对我来说很有效。

请注意,SellDateForInstallment 是一个可空的日期时间对象。

public DateTime? SellDateForInstallment { get; set; } // Model property

0
我在“Web.config”文件中的系统标签内设置了全局配置:
globalization uiCulture="en" culture="en-US"
在CsHtml中: @Html.TextBoxFor(model => model.fechaConfirmacion, new { @type = "date", @Value = Model.fechaConfirmacion.ToString("MM/dd/yyyy hh:mm:sszzz") })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接