я получаю дату в качестве ядра контроллера ASP.NET так:Изменить формат по умолчанию для DateTime разборе в ASP.NET Ядра
public class MyController:Controller{
public IActionResult Test(DateTime date) {
}
}
Каркас может разобрать дату, но только на английском формате. Когда я передаю 04.12.2017 как параметр даты, я имею в виду 4 декабря 2017 года. Это получило бы синтаксический анализ как английская дата, поэтому мой объект даты получит значение 12 апреля 2017 года. Я попробовал добавить немецкий только с помощью статьи this, а также this, но безуспешно.
Что необходимо сделать, чтобы ASP.NET Core автоматически обрабатывал даты в правильном формате в Германии?
Update Я попытался установить 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 Как я уже сказал: параметр call with test? Date = 12.04.2017 приводит к * 04.12.2017 * в качестве объекта даты внутри функции Test. Я ожидаю немодифицированную дату, поэтому 12.04.2017 вместо 04.12.2017. – Lion
Передайте его как строку, затем используйте 'DateTime.ParseExact', чтобы разобрать его точно так, как вы хотите. –