c# - DateTime 的文本框格式错误

标签 c# asp.net-mvc datetime-format

我知道这是最常被问到的问题之一。 我有解决方案,但我目前的项目让我抓狂。 我使用完全相同的代码,但结果仍然不同。

这是我通常用来格式化日期的代码:

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

通常这应该导致 07/10/2014 但由于某种原因它导致 07-10-2014 当我在另一个项目中测试它时,上面的代码按预期工作。

作为测试,我比较了以下几行的结果:

@Html.TextBoxFor(m => m.DateOfAgenda, "{0:dd/MM/yyyy}")
/* result: 07-10-2014*/
@Html.TextBoxFor(m => m.DateOfAgenda)
/* result: 7-10-2014 00:00:00*/

所以我的代码似乎只部分工作,'-' 不会被 '/' 替换 有人知道如何一劳永逸地处理这个问题吗?

编辑

我有自定义代码设置文化。 它使用路由将其设置为特定文化(默认为“nl”) 当我将下面的代码放在评论中时,一切似乎都有效。 但是我需要这部分来加载我的资源(标签文本、错误……)。

var language = handler.RequestContext.RouteData.Values["language"];

if (language != null)
{
    Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(language.ToString());
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language.ToString());
}

更具体地说,这一行打破了格式

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language.ToString());

有人知道为什么吗?我希望 {0:dd/MM/yyyy} 具有优先权,因为它是明确设置的。 有趣的是 / 只是被翻译成 -。 当我使用 {0:dd//MM//yyyy} 时,结果为 19--10--2014

编辑

抱歉我回复晚了,但我没时间试一试。 所以基本上问题出在文化和我的格式设置上。

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

'/' 仍然会被您的文化指定的分隔符所取代。 我的文化设置为“nl”,但默认情况下这会导致“nl-nl”,他们使用“-”作为日期分隔符。我住在比利时“nl-be”,在这里我们使用“/”。 可以设置我的文化或更改格式。 下面的代码起到了作用。

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

最佳答案

我不太熟悉 ASP.NET MVC,但如果您不指定格式,则会使用您当前区域性的 DateTimeFormat。此外,/ 是 .NET 中的特殊格式说明符,这意味着“用当前的 DateTimeFormat 日期分隔符替换我,它似乎是 - .

因此您应该提供 CultureInfo.InvariantCulture 或使用 \\/ 代替格式说明符:

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

或者使用字 rune 字'/':

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

阅读:The "/" Custom Format Specifier

关于c# - DateTime 的文本框格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26455581/

相关文章:

javascript - 如何将此日期 'Wed Mar 9 09:48:09 PST 2016'转换为 'YYYY-MM-DD HH:mm:ss'格式?

coldfusion - 日期/时间转换 ColdFusion

C# - 从文件夹中播放随机声音文件

c# - 使用 Sendgrid 在 Azure 上发送简单的电子邮件

c# - 每种类型的自定义 Json.NET 序列化程序设置

.net - 什么是 System.Web.Mvc.MvcHandler.ProcessAsyncRequest()?

c# - 如何使用 IQueryable 方法返回额外数据?

c# - .NET Core 应用程序中的 ConfigurationManager

c# - ASP.net MVC - 在复杂模型上更新模型

c# - 服务器的全局文化在不同服务器上不同时的 DateTime 问题