【发布时间】:2017-01-13 20:17:46
【问题描述】:
我在 ASP.NET Core 控制器中得到一个日期,如下所示:
public class MyController:Controller{
public IActionResult Test(DateTime date) {
}
}
框架能够解析日期,但只能是英文格式。当我将 04.12.2017 作为日期参数传递时,我的意思是 2017 年 12 月 4 日。这将被解析为英文日期,因此我的日期对象的值是 2017 年 4 月 12 日。我尝试仅添加德语使用this 文章和this,但没有成功。
需要做什么才能让 ASP.NET Core 自动以正确的德语格式解析日期?
更新 我试图设置 RequestLocalizationOptions
services.Configure<RequestLocalizationOptions>(opts =>
{
var supportedCultures = new[]
{
new CultureInfo("de-DE"),
};
opts.DefaultRequestCulture = new RequestCulture("de-DE");
// Formatting numbers, dates, etc.
opts.SupportedCultures = supportedCultures;
// UI strings that we have localized.
opts.SupportedUICultures = supportedCultures;
});
还是不行。我调用 example.com/Test?date=12.04.2017 并在我的调试器中得到了这个:
public IActionResult Test(DateTime date) {
string dateString = date.ToString("d"); // 04.12.2016
string currentDateString = DateTime.Now.ToString("d"); // 14.01.2016
return Ok();
}
【问题讨论】:
-
你是如何传入要解析的日期,显示你做的URL格式。
-
@ScottChamberlain 正如我所说:使用 Test?date=12.04.2017 参数的调用导致 04.12.2017 作为 Test 函数内的日期对象。我期待未修改的日期,所以 12.04.2017 而不是 04.12.2017。
-
将其作为字符串传递,然后使用
DateTime.ParseExact以完全所需的方式对其进行解析。 -
为了清楚起见(以帮助讨论)04.12.2017 是 12 月 4 日 是 英文格式,或者更准确地说是英式英语。 4 月 12 日是美国英语格式。尽管英国会使用 / 而不是 .作为分隔符。
-
嗨@Lion 我将 Startup.cs 粘贴为 asp.net 核心项目类型并设置文化信息。当我查看控制器中的当前文化时,设置为 DE 。如果这有帮助,请试试这个。我试过它以 DE 格式显示日期。我没有尝试在控制器位 om 立即窗口中使用参数。
标签: c# asp.net-core asp.net-core-mvc asp.net-core-1.0