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

如何为Material UI的KeyboardTimePicker设置默认值

解决Material UI KeyboardTimePicker默认时间格式无效问题

问题出在KeyboardTimePicker的value属性类型不匹配:组件要求传入Date对象或moment实例,但你直接传了"10:20"这种字符串格式的时间,所以触发了「Invalid Time Format」错误。

正确的解决步骤:

  • 利用你代码中已经用到的moment库,将字符串格式的时间转换为moment实例,同时指定解析格式为HH:mm
  • 增加空值判断,避免当props.value为空时出现解析错误

修改后的代码:

const timeDefaultProps = {
    label: props.label,
    variant: "inline",
    inputVariant: "outlined",
    ampm: false,
    showTodayButton: true,
    format: "HH:mm",
    // 关键修改:将字符串转成moment实例,同时处理空值
    value: props.value ? moment(props.value, "HH:mm") : null,

    onChange: (date) => props.onChange(moment(date).format("HH:mm")),

    onBlur: (event) => {
      setBlured(false);
    },
    onFocus: () => {
      setBlured(true);
    },
    keyboardIcon: (
      <TimeIcon
        className={clsx(
          classes.calendarIcon,
          classes.calendarIconKeyboardPicker
        )}
      />
    ), 
  };

<KeyboardTimePicker {...timeDefaultProps} />

补充说明:

moment的moment(str, format)方法会严格按照指定的格式解析字符串,生成合法的时间实例,组件就能正确识别并渲染这个默认时间了。如果后续你的props.value可能有其他格式,只需要对应调整moment的第二个参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:55:24