#angular #typescript #casting
#angular #typescript #Кастинг
Вопрос:
Я видел несколько сообщений в stack overflow о проблеме с датами и часовым поясом, но не получил ни малейшего представления. У меня есть столбец даты в таблице, и у меня есть это как строка, поэтому перед сохранением в БД я конвертирую эти столбцы как дату и отправляю на сервер.
TS:
item.effectiveDate=new Date(item.effectiveDate);
В Console.log (item.EffectiveDate) я получаю правильную дату, допустим, я указал 9 сентября 2020
Журнал консоли:
effectiveDate: Wed Sep 09 2020 00:00:00 GMT 0530 (India Standard Time)
Но на стороне сервера даты отправляются примерно на 1 день меньше:
В DB:
EffectiveDate
2020-09-08 18:30:00.000
Чего я ожидаю, так это того, что 2020-09-09 00:00:00.000
Комментарии:
1. Ваша дата в базе данных указана в формате / зоне GMT / UTC, а в консоли вы получаете ее в IST.
2. Есть идеи о том, как этого достичь? Я пробовал конвертировать возможными способами.
Ответ №1:
У меня была такая же проблема при обработке дат, но синтаксический анализ даты в формате UTC решил проблему для меня.
Измените свой TS-код, как показано ниже:
item.effectiveDate=new Date(Date.parse(item.effectiveDate "T00:00:00 0000"));
Ответ №2:
Обычно базы данных будут содержать даты UTC, но вы можете обрабатывать преобразование на уровне пользовательского интерфейса на основе часового пояса пользователя. Вы можете использовать либо https://date-fns.org / или https://momentjs.com / для обработки преобразований на уровне пользовательского интерфейса.
Я бы предложил использовать стандартный формат ISO для передачи даты и времени из серверной части во внешний интерфейс, чтобы сохранить информацию о часовом поясе. Пример. 2020-08-14T10:41:20 05:30
Комментарии:
1. Спасибо за ваш ответ!