You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Material-UI DataGrid内置datetime picker本地化及时间范围限制问题

Material-UI DataGrid 日期选择器问题解决方案

1. 英式英语本地化操作

Material-UI的DataGrid内置日期选择器的本地化需要通过统一的本地化提供者实现,操作步骤:

  • 安装依赖包:
    npm install @mui/x-date-pickers @date-io/date-fns date-fns
  • 在代码中引入英式英语配置和本地化提供者,修改你的Scheduler组件代码如下:

首先新增导入语句:

import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
import enGB from 'date-fns/locale/en-GB';

然后在return的最外层包裹LocalizationProvider:

return (
  <LocalizationProvider dateAdapter={AdapterDateFns} adapterLocale={enGB}>
    {/* 你原来的所有JSX内容保持不变 */}
    <div style={{display: 'flex', flexDirection: 'column', paddingTop: 100}}>
      {/* 原有内容不需要修改 */}
    </div>
  </LocalizationProvider>
)

配置完成后,日期选择器会自动适配英式英语习惯,日期格式为日/月/年,时间默认使用24小时制,所有控件文本也会切换为英式英语。


2. 可选日期时间限制操作

你需要自定义date列的编辑组件,替换默认的选择器来添加限制规则,修改你的columns配置中date字段的代码:

import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

const columns = [
  // 其他列配置保持不变
  {
    field: 'date',
    headerName: 'Date',
    editable: true,
    width: 150,
    type: 'dateTime',
    // 自定义编辑组件添加限制
    renderEditCell: (params) => {
      const handleChange = (newValue) => {
        params.api.setEditCellValue({ 
          id: params.id, 
          field: params.field, 
          value: newValue 
        });
      };
      return (
        <DateTimePicker
          value={params.value}
          onChange={handleChange}
          // 日期限制示例:只能选今天到未来30天内的日期
          minDate={new Date()}
          maxDate={new Date(Date.now() + 30 * 24 * 60 * 60 * 1000)}
          // 时间限制示例:只能选9:00-18:00的时间段
          minTime={new Date(0, 0, 0, 9, 0)}
          maxTime={new Date(0, 0, 0, 18, 0)}
          // 额外限制示例:禁用周六周日
          shouldDisableDate={(date) => {
            const day = date.getDay();
            return day === 0 || day === 6;
          }}
          slotProps={{
            textField: {
              variant: 'standard',
              fullWidth: true,
              error: params.error,
              helperText: params.error ? params.error.message : '',
            }
          }}
        />
      )
    }
  }, 
];

你可以根据需求自行修改minDate、maxDate、minTime、maxTime以及shouldDisableDate、shouldDisableTime的规则,实现任意的可选范围限制。


内容的提问来源于stack exchange,提问作者JM223

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:48:00