如何在ASP.NET Core中设置正确的日期格式

时间:2018-08-27 11:22:14

标签: c# asp.net-core razor-pages

我正在使用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>

这是它的样子

enter image description here

如何更改代码,以使图像中显示的日期格式显示瑞典日期格式yyyy-MM-dd

注意:我也曾尝试将html标签设置为html lang =“ sv”,但未成功。

enter image description here

4 个答案:

答案 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")