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

调用日期计算函数时一维数组日期参数返回NaN问题分析

日期数组元素传入函数返回NaN的问题与解决

我修改了Cooper在2017年写的一段代码,使其支持参数传入。当使用从表格中提取的两个单独日期值调用getDaysHoursAndMinutes函数时,运行完全正常;但遍历表格提取的一维日期数组,用数组元素作为参数调用该函数时,却返回了NaN。

测试代码片段

console.log("orderOut :" + orderOut);
console.log("orderIn :" + orderIn);
console.log("assetOutOn:" + assetsOutOn[1]);
function test() {
  var easyPeezee = getDaysHoursAndMinutes(orderOut, orderIn);
  console.log("easyPeezee:" + easyPeezee);
  var myResult = getDaysHoursAndMinutes(orderOut, assetsOutOn[1]);
    console.log("myResult :" + myResult);
}

控制台输出

7:07:31 PM  Info    orderOut :Fri May 05 2023 00:00:00 GMT-0400 (Eastern Daylight Time)
7:07:31 PM  Info    orderIn :Mon May 08 2023 00:00:00 GMT-0400 (Eastern Daylight Time)
7:07:31 PM  Info    assetOutOn:Tue May 02 2023 00:00:00 GMT-0400 (Eastern Daylight Time)
7:07:31 PM  Info    easyPeezee:3
7:07:31 PM  Info    myResult :NaN

被调用的函数代码

function getDaysHoursAndMinutes(hd, td) {
  //var hd=new Date('2022-11-21T20:23:26+0000').valueOf();
  //var td=new Date().valueOf();
  var sec = 1000;
  var min = 60 * sec;
  var hour = 60 * min;
  var day = 24 * hour;
  var diff = td - hd;
  var days = Math.floor(diff / day);
  var hours = Math.floor(diff % day / hour);
  var minutes = Math.floor(diff % day % hour / min);
  //Logger.log('%s days %s hours %s minutes', days, hours, minutes);
  return days;
}

解决方法

问题核心是数组中的日期元素并非可直接运算的时间戳数值,即使控制台打印的格式和单独日期一致,其内部可能是字符串或未正确初始化的对象,直接做减法会得到NaN。

取消注释函数开头的两行代码,并修改为基于传入参数获取时间戳即可:

function getDaysHoursAndMinutes(hd, td) {
  hd = new Date(hd).valueOf();
  td = new Date(td).valueOf();
  var sec = 1000;
  var min = 60 * sec;
  var hour = 60 * min;
  var day = 24 * hour;
  var diff = td - hd;
  var days = Math.floor(diff / day);
  var hours = Math.floor(diff % day / hour);
  var minutes = Math.floor(diff % day % hour / min);
  //Logger.log('%s days %s hours %s minutes', days, hours, minutes);
  return days;
}

显式通过new Date().valueOf()将参数转换为时间戳数值后,减法运算就能正常执行,返回预期的天数结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:23:12