我知道这是最常问的问题之一。 我曾经有解决方法,但我的当前项目让我发疯了。 我使用完全相同的代码,但结果仍然不同。
这是我通常用来格式化日期的代码:
@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}")