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

如何在WebService请求中自动生成当前日期及一年前日期替换DATEFIN与DATEDEBUT

解决方案

步骤1:新增日期格式化工具方法

你可以先封装一个通用的日期格式化工具函数,统一输出YYYY-MM-DD格式的字符串,避免重复编码:

// 输入Date对象,输出符合接口要求的日期字符串
function formatDate(date) {
  const year = date.getFullYear();
  // 月份从0开始计数,需要+1,不足两位补0
  const month = String(date.getMonth() + 1).padStart(2, '0');
  // 日期不足两位补0
  const day = String(date.getDate()).padStart(2, '0');
  return `${year}-${month}-${day}`;
}

步骤2:修改接口请求的参数生成逻辑

直接修改原getNews方法中PERIODE字段的赋值逻辑,自动计算两个目标日期:

getNews(SVM, last) {
    // 生成目标日期
    const currentDate = new Date();
    const lastYearDate = new Date();
    // 当前年份减1,得到一年前的日期
    lastYearDate.setFullYear(lastYearDate.getFullYear() - 1);

    var payload = {
        "HEADER": this.sh.getHeaderForRequest(),
        "SVM": SVM,
        "PERIODE": {
            "DATEDEBUT": formatDate(lastYearDate),
            "DATEFIN": formatDate(currentDate)
        },
        "LASTX": 0
    }
    return this.http.post<any[]>(this.getBaseUrl() + `/WLOLARTL`, payload);
}

原有调用接口的代码不需要做任何修改,不影响现有业务逻辑。

注意事项

  • 上述代码默认取客户端本地设备时间生成日期,如果业务要求必须使用服务端统一时间,需要先调用公共接口获取服务端当前时间,再基于该时间计算一年前的日期
  • 如果项目需要兼容ES2017以下的老旧运行环境,可以将padStart替换为手动补0逻辑:
function padZero(num) {
  return num < 10 ? '0' + num : num;
}
// 对应的formatDate修改为:
function formatDate(date) {
  const year = date.getFullYear();
  const month = padZero(date.getMonth() + 1);
  const day = padZero(date.getDate());
  return `${year}-${month}-${day}`;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:04