如何在 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
对象。
我在 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
对象。