【问题标题】:How can I subtract a year and add months to my dates?如何在我的日期中减去一年并添加几个月?
【发布时间】:2019-04-10 14:26:40
【问题描述】:

我有一个包含未来日期的列,我想使用修改后的 JavaScript 步骤减去年份并添加月份。

CloseDate 的数据类型为Date,格式为 mm/dd/yyyy。例如01/10/2020

我尝试了以下方法:

var newDate;
year(CloseDate) = year(CloseDate)-1;
month(CloseDate) = month(CloseDate)+5;
newDate = CloseDate;

但它没有修改日期,我收到以下错误:

Modified JavaScript value.0 - Javascript error: 
Modified JavaScript value.0 - ReferenceError: Function function year() {
    [native code, arity=1]
}
 can not be used as the left-hand side of assignment or as an operand of ++ or -- operator. (script#11)

我的 JavaScript 代码中是否缺少某些内容?

【问题讨论】:

  • CloseDate 是字符串吗?如果是这样,它是什么样子的,你能举个例子吗
  • 请提供minimal reproducible example。确保声明了所有必要的函数和变量。

标签: javascript date pentaho pentaho-spoon pentaho-data-integration


【解决方案1】:

您需要将新的年份和月份分配给一个有效的变量:

var year = CloseDate.getFullYear()-1;
var month = CloseDate.getMonth()+5;

当我们在做的时候,我们也应该得到一天:

var day = CloseDate.getDate();

请注意,= 左侧的括号没有任何意义,会导致错误。此外,我使用正确的函数名称来获取日期的各个部分。这些函数在Date 原型中,所以我必须使用点符号来访问它们。我通过谷歌搜索“javascript date”找到了这些,然后单击 MDN 文档的第一个链接。

最后,将这些部分重新组合在一起作为一个完整的日期:

var newDate = new Date(year, month, day);

【讨论】:

    【解决方案2】:

    如果 CloseDate 已经是 Date 字段,在 PDI 的 Modified JavaScript Script Value Step 中,可以使用 dateAdd function():

    var newDate = dateAdd(dateAdd(CloseDate,"y",-1), "m", 5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多