我正在使用asp.net核心创建网页。我正在尝试将yyyy-MM-dd
的默认日期格式从英语更改为瑞典语这是我当前的型号
[DataType(DataType.Date)]
[Display(Name = "Required delivery date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
public Nullable<DateTime> DelDt { get; set; }
这是剃刀页
<td><label asp-for="Order.DelDt" class="control-label "></label></td>
<td><input asp-for="Order.DelDt" asp-format="{0:yyyy-MM-dd}" tabindex=17 class="form-control"></td>
这是它的样子
如何更改代码,以使图像中显示的日期格式显示瑞典日期格式yyyy-MM-dd
注意:我也曾尝试将html标签设置为html lang =“ sv”,但未成功。
答案 0 :(得分:1)
在浏览器中看到的是用户操作系统(在这种情况下可能是您的操作系统)提供的本地化日期格式。您应该注意一些事情。首先,由于您将此字段绑定到DateTime
(使用DataType.Date
),因此Razor使用type="date"
生成输入。这是HTML5输入类型,在支持的浏览器(所有现代浏览器)中,它将触发实际的浏览器“日期”控件。
第二,HTML5日期输入采用并返回ISO日期YYYY-MM-DD
,但是输入中显示的该日期的显示将针对用户进行本地化。您无法控制此显示;它基于用户在其操作系统上的区域性设置。因此,如果您实际上使用瑞典文化设置,则此处显示的就是您想要的。但是,您显然正在使用OS上的美国文化区域设置,这就是您所看到的。同样,您无法控制它;您只需要相信它会是正确的,或者您就可以更改操作系统的区域性设置来以其他格式查看它。
第三,涵盖了受支持的浏览器,但是在不受支持的浏览器(几乎只有IE 9及更低版本)中,这将被呈现为常规的文本输入,没有格式,并且允许用户在这些浏览器中自由输入文本。因此,如果需要支持较旧的浏览器,则应使用polyfill或某些日期输入库,该库将允许您屏蔽/控制用户输入。根据最终使用的库,您可能能够显式地控制格式,或者,如果格式正确,它也可能依赖于区域性设置。您需要查阅最终使用的任何库的文档。
最后,如果要对该输入进行显式控制,则可以自己提供type属性并将其设置为text
。
<input type="text" asp-for="Order.DelDt" tabindex=17 class="form-control">
然后,您可以使用所需的任何客户端解决方案来设置日期格式。这样的好处是可以为所有用户和浏览器类型提供全面的统一体验。但是,这也和专业人士一样多。 date
输入类型在移动设备上具有很深的集成度,通常在那里提供更好的用户体验。如果您确实使用了常规的文本输入,则应确保使用的任何客户端库都可以在移动设备上提供合适的体验。
答案 1 :(得分:1)
要以dd-mm-yyyy显示日期格式,请按照以下说明进行操作,
数据注释应该像
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
视图应如下,
<label asp-for="StartDate"></label>
<input asp-for="StartDate" class="form-control" />
答案 2 :(得分:0)
通过将这段代码放入 Configure 方法
,您可以全局更改本地化设置。var ci = new CultureInfo("sv-SE");
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(ci),
SupportedCultures = new List<CultureInfo>
{
ci,
},
SupportedUICultures = new List<CultureInfo>
{
ci,
}
});
答案 3 :(得分:0)
HTML5 date
输入类型采用并返回ISO日期YYYY-MM-DD
.ToString("yyyy-MM-dd")