【发布时间】:2022-01-06 08:52:00
【问题描述】:
我正在使用 MUI (v5) Datepicker 进行用户生日输入。我已将其本地化为德语。所以输入是DD.MM.YYYY。
现在许多德国用户都在使用像DD.MM.YY 这样的短年份值。但是这个输入会导致错误的值:
输入05.01.20 给我Sun Jan 05 0020 00:00:00 GMT+0053。这导致我遇到两个问题:
- 如何“强制”用户输入四位数年份值?输入两位数字会生成有效(但无用)的日期。
- 或者(这样会更好)我如何检查和处理两位数的年份值?我认为未来的值 (
80) 应该被用作1980和18应该导致2018。
对我来说,第二点会是更好的解决方案,所以我必须将输入通常设置为格式 DD.MM.YY 并按照描述处理这些输入。但是如何更改 DatePicker 的输入格式呢?
import React from 'react'
import AdapterDateFns from '@mui/lab/AdapterDateFns'
import LocalizationProvider from '@mui/lab/LocalizationProvider'
import DatePicker from '@mui/lab/DatePicker'
import deLocale from 'date-fns/locale/de'
import { toDate, isValid } from 'date-fns'
const Component = () => {
const [birthday, setBirthday] = React.useState<Date>(null)
const handleDateChange = (value: any) => {
console.log(isValid(value))
setBirthday(toDate(value))
}
return (
<LocalizationProvider dateAdapter={AdapterDateFns} locale={deLocale}>
<DatePicker
disableFuture
mask="__.__.____"
value={birthday}
onChange={handleDateChange}
renderInput={(params) => (
<TextField {...params} />
)}
/>
</LocalizationProvider>
)
}
【问题讨论】:
标签: javascript material-ui date-fns