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

JavaScript日期解析异常:DevExpress DateEdit显示NaN-Na-Na求助

解决DevExpress DateEdit显示NaN-Na-Na的问题

嗨,这个坑我之前踩过!你碰到的NaN-Na-Na问题,根源是原生JavaScript的Date构造函数解析字符串的兼容性问题——虽然"2018-04-01 12:45:34"看起来是标准格式,但部分浏览器(尤其是旧版IE)没法正确识别这种用空格分隔日期和时间的写法,导致new Date(_dateString)返回了一个无效的日期对象,最终DevExpress的DateEdit控件没法渲染出正确日期,就显示成NaN了。

答案是肯定的:你需要明确指定日期格式来解析字符串,这里有两种靠谱的解决方法:

方法1:手动拆分字符串构建Date对象

通过拆分日期时间字符串,把各个部分转换成数字后传入Date构造函数(注意月份是0-based的,即1月对应0,4月对应3):

setDate(_dateString) {
  // 拆分日期和时间部分
  const [datePart, timePart] = _dateString.split(' ');
  // 拆分年、月、日
  const [year, month, day] = datePart.split('-').map(Number);
  // 拆分时、分、秒
  const [hours, minutes, seconds] = timePart.split(':').map(Number);
  // 构建有效的Date对象
  const validDate = new Date(year, month - 1, day, hours, minutes, seconds);
  dtStartTime.SetValue(validDate);
}

方法2:使用DevExpress内置的日期解析工具(推荐)

DevExpress提供了专门的日期解析方法,能直接指定格式解析字符串,完全避免浏览器兼容问题,比如DevExpress.utils.date.parse:

setDate(_dateString) {
  // 指定待解析的日期格式为"yyyy-MM-dd HH:mm:ss"
  const validDate = DevExpress.utils.date.parse(_dateString, "yyyy-MM-dd HH:mm:ss");
  dtStartTime.SetValue(validDate);
}

两种方法都能确保生成有效的Date对象,让DateEdit控件正确显示日期。相比手动拆分,用DevExpress的内置工具更省心,也更贴合控件的设计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:43:27