#javascript #c# #api #date
#javascript #c# #API #Дата
Вопрос:
Я хочу использовать moment для обработки дат, но когда я отправляю запрос на URL-адрес web api, дата поступает в другом формате.
Например, из JS я отправляю ‘2021-01-02′, но когда запрос поступает на серверную часть, дата преобразуется в ’02-01-2021’, и мне нужно обработать формат ГГГГ-ММ-ДД для серверной части
пример запроса:
get(): Observable<any>{
let strDate = '2021-01-02';
const payoad = {
... //other properties,
datesearch: moment(strDate).format('YYYY-MM-DD') // --> 2021-01-02
}
return this.http.post<any>('https://localhost:33421/api/orders', payload)
}
Мой запрос класса c #:
public class RequestDto
{
public string Category { get; set; }
public string Product { get; set; }
public DateTime Datesearch { get; set; }
}
Мой контроллер веб-api:
[HttpPost]
public async Task<IActionResult> Search(RequestDto request)
{
var datecheck = request.Datesearch; // -> this get '02-01-2021'
....
....
return Ok(response);
}
Что я могу делать неправильно?
Обновить:
Решил это следующим образом: поскольку я работаю с net core, мне пришлось установить информацию о культуре в моем классе SatrtUp.cs -> Метод Configure
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
CultureInfo customCulture = new CultureInfo("en-US", true);
customCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(customCulture),
SupportedCultures = new List<CultureInfo>
{
customCulture
},
SupportedUICultures = new List<CultureInfo>
{
customCulture
}
});
......
......
}
Комментарии:
1. Для меня ваш код работал хорошо.
Ответ №1:
Лучшее, что можно сделать, это изменить
'YYYY-MM-DD'
Для
'YYYY-MMM-DD'
Таким образом, это позволяет избежать двусмысленности, и c # DateTime может легко ее проанализировать.
т.е.. 05-06-20 может быть 6 мая 2020 года или 5 июня 2020 года. Проще использовать письма за месяц
Комментарии:
1. Этот «ответ» кажется неуместным для вопроса.
2. @RobG Обычно причина, по которой люди беспокоятся о порядке частей даты, заключается в различии между американским и европейским форматами даты, что может привести к ошибкам синтаксического анализа. Это устраняется, если месяц указан буквами. После этого C # может напечатать правильную дату в любой форме, которая вам нравится.
3. @RobG Также возможно, что я неправильно истолковал вопрос.
4. У меня не сработало, запрос выдал 400 (неверный запрос) в формате ‘ГГГГ-МММ-ДД’
5. @AlonsoContreras измените порядок и убедитесь, что прописные буквы указаны правильно. вероятно, ‘дд МММ гггг’