#reactjs #datetime #formik #formik-material-ui
Вопрос:
Я использую Formik TimePicker, так как все, что мне нужно, — это просто выбор времени пользователем, включая секунды, т. Е. format="HH:mm:ss"
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я просматриваю конечный результат, я заметил, что он также возвращает дату и добавляет ее ко времени.
У меня есть пример кода здесь: CodeSandbox-таймер
Как вы можете видеть, когда вы выбираете время и нажимаете кнопку «Отправить», вы увидите эту дату вместе со временем.
Есть ли какие-либо способы просто вернуть только часть времени — format="HH:mm:ss"
Комментарии:
1. Я не вижу никакого варианта для этого в документации, поэтому вам просто придется отформатировать его вручную. Это довольно легко сделать с помощью замены регулярного выражения, просто сделайте
time = time.split(/T(.*)./g)[1];
Ответ №1:
Вам нужно отформатировать дату, и существует ряд библиотек, которые могут помочь в форматировании дат. Здесь я использую format
с даты-fns
Так что просто отформатируйте дату, следуя:-
import {format} from 'date-fns'; // import statement
...
...
format(values.time, 'HH:mm:ss') // format date with desired format
Рабочая демонстрация здесь: https://codesandbox.io/s/formik-time-picker-ixxxp
Комментарии:
1. Есть ли какие-либо средства для выполнения этого форматирования как части события onChange в
<TimePicker>
компоненте?2. Компонент TimePicker всегда будет возвращать комбинацию даты и времени, поэтому я думаю, что мы всегда должны форматировать дату на нашей стороне.
Ответ №2:
Вы можете получить время из даты-времени без использования каких-либо внешних библиотек, преобразовав строку в Date
объект и используя toLocaleTime
.
const time = new Date(values.time).toLocaleTimeString();
alert(time);