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

react-datepicker与moment.js初始日期显示1970-01-01的问题

解决react-datepicker初始显示1970-01-01而非今日日期的问题

你遇到的问题根源在于convertTimestampToDate函数的逻辑——当this.props.event.startDate的值为0、undefined或者null时,moment(ts)会默认创建对应Unix纪元(1970-01-01)的日期对象,这就是为什么初始显示的是这个日期而非今日。

要修复这个问题,我们只需要在转换函数里增加一个判断:当传入的时间戳无效时,直接返回今日的moment对象即可。

修改后的convertTimestampToDate函数

private convertTimestampToDate(ts: number | undefined | null): moment.Moment {
  // 当时间戳不存在或为0时,返回今日日期
  if (!ts || ts === 0) {
    return moment();
  }
  // 否则正常转换时间戳为moment对象
  return moment(ts);
}

额外的检查点

  • 确认this.props.event.startDate的初始值:如果你的事件数据在初始加载时还未获取到,startDate可能会是undefined,这时候上面的判断就能帮你兜底显示今日。
  • 确保react-datepicker组件的selected属性始终接收有效的moment对象,避免传入null或undefined导致组件异常。

这样修改后,当没有有效的起始日期时,组件就会默认显示今日日期,符合你的预期啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:01:57