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

如何从Excel文件提取数据生成JS变量/对象,实现日期对应值差值计算?

基于Bootstrap表格数据实现日期差值计算方案

你不需要手动创建900个变量,只需要把表格数据转换成日期-数值的键值对映射,就能快速实现日期对应数值的查询与差值计算。以下是具体实现步骤:

1. 从Bootstrap表格提取数据,构建映射对象

首先遍历已渲染的表格行,将日期作为唯一键、对应数值作为值存入一个对象,后续直接通过日期键访问数值,无需单独变量。

// 初始化日期-数值映射对象
const dateValueMap = {};

// 遍历表格tbody的每一行(根据你的表格结构调整选择器)
document.querySelectorAll('.table tbody tr').forEach(row => {
  const cells = row.querySelectorAll('td');
  // 假设日期在第1列(索引0),数值在第2列(索引1)
  if (cells.length >= 2) {
    const rawDate = cells[0].textContent.trim();
    // 将mm/dd/yy格式转为标准YYYY-MM-DD字符串,避免格式歧义
    const [month, day, year] = rawDate.split('/');
    // 处理年份:若yy>=50则归为19xx,否则20xx(可根据你的数据实际情况调整)
    const fullYear = year >= 50 ? `19${year}` : `20${year}`;
    const formattedDate = `${fullYear}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
    
    // 解析数值(若表格数值含千分位,先去掉逗号:cells[1].textContent.replace(/,/g, ''))
    const value = parseFloat(cells[1].textContent.trim());
    dateValueMap[formattedDate] = value;
  }
});

2. 实现日期差值计算函数

编写函数处理用户输入的日期,转换为统一格式后从映射对象中取值并计算差值。

// 计算两个日期的数值差值
function calculateDateDiff(inputDate1, inputDate2) {
  // 统一转换用户输入的mm/dd/yy格式为标准日期键
  const formatInputDate = (rawDate) => {
    const [month, day, year] = rawDate.split('/');
    const fullYear = year >= 50 ? `19${year}` : `20${year}`;
    return `${fullYear}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
  };

  const formattedDate1 = formatInputDate(inputDate1);
  const formattedDate2 = formatInputDate(inputDate2);

  // 验证日期是否存在于数据中
  if (!dateValueMap.hasOwnProperty(formattedDate1)) {
    return `错误:未找到日期${inputDate1}对应的数据`;
  }
  if (!dateValueMap.hasOwnProperty(formattedDate2)) {
    return `错误:未找到日期${inputDate2}对应的数据`;
  }

  // 计算差值(这里是date2数值 - date1数值,可按需调整顺序)
  const diff = dateValueMap[formattedDate2] - dateValueMap[formattedDate1];
  return `数值差值:${diff.toFixed(2)}`;
}

3. 绑定用户输入交互

给页面上的输入框和按钮绑定逻辑,触发计算并展示结果:

<!-- 示例输入区域(可结合Bootstrap样式调整) -->
<div class="row mb-3">
  <div class="col">
    <input type="text" id="dateInput1" class="form-control" placeholder="输入日期(mm/dd/yy)">
  </div>
  <div class="col">
    <input type="text" id="dateInput2" class="form-control" placeholder="输入日期(mm/dd/yy)">
  </div>
  <div class="col">
    <button onclick="handleCalculate()" class="btn btn-primary">计算差值</button>
  </div>
</div>
<div id="resultDisplay" class="alert alert-info"></div>
// 处理用户点击计算按钮的逻辑
function handleCalculate() {
  const date1 = document.getElementById('dateInput1').value.trim();
  const date2 = document.getElementById('dateInput2').value.trim();

  if (!date1 || !date2) {
    document.getElementById('resultDisplay').textContent = '请输入两个有效的日期';
    return;
  }

  const result = calculateDateDiff(date1, date2);
  document.getElementById('resultDisplay').textContent = result;
}

注意事项

  • 调整表格列索引:根据你的实际表格结构,修改cells[0](日期列)和cells[1](数值列)的索引值
  • 数值格式兼容:若表格中的数值包含千分位(如1,234.56),需先通过replace(/,/g, '')去除逗号再解析
  • 年份规则:如果你的数据包含跨世纪日期(如99代表1999),确保年份转换逻辑符合你的数据规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:57:33