如何在 ASP.Net Core 中更改路由中的 DateTime 格式?

How to change DateTime format in route in ASP.Net Core?

我在 Route 属性中使用 datetime 这样的:

[Route("{givenDate:datetime}")]

但它的格式是 "American",即 "month-day-year"。

如何将其转换为 "day-month-year" 格式?

PS。我知道我可以使用 "yearmonthday" 或 "year-month-day" 等其他格式,但 "day-month-year" 对我来说看起来更直观。

您可以改用如下路线:

[Route("{day:regex(^[[0-2]][[0-9]]|3[[0-1]]$)}-{month:regex(^0[[0-9]]|1[[0-2]]$)}-{year:regex(^\d{{4}}$)}")]

然后将您的操作更改为:

public IActionResult Foo(int day, int month, int year)
{
    var givenDate = new DateTime(year, month, day);

    ...
}

诚然,这很糟糕,但它确实完成了工作。正则表达式约束虽然丑陋得要命,但将确保最终通过的任何值都将用于构造一个 DateTime 对象。