Moment.js减去变量不起作用

时间:2016-03-09 22:21:04

标签: javascript momentjs

我有一段这样的代码:

var exadate = "2016-03-06 02:15:54";                //Some date
var time = "5 days"                                 //Need to subtract this
var reldate = time.split(" ");                      //Make 2 subtract variables

var timestamp = moment(exadate,"YYYY-MM-DD HH:mm:ss").subtract(reldate[0],reldate[1]).format("D MMM YYYY|HH:mm");

返回“ 2016年3月6日| 02:15 ”而不是“ 2016年3月1日| 02:15 ”。

但是,如果我将.subtract()指定为.subtract(reldate[0],"days"),则会将其正确减去。但time我将从几分钟到几天减去范围,因此字符串必须是一个变量。

更令人费解的是,在我更新代码之前,这条确切的行完美运行了。但是,这些更改应该对代码的这一部分没有影响。

2 个答案:

答案 0 :(得分:2)

似乎工作:

var exadate = "2016-03-06 02:15:54";                //Some date
var time = "5 days"                                 //Need to subtract this
var reldate = time.split(" ");                      //Make 2 subtract variables

var timestamp = moment(exadate,"YYYY-MM-DD HH:mm:ss").subtract(reldate[0],reldate[1]).format("D MMM YYYY|HH:mm");

document.getElementById('result').innerHTML = timestamp;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.min.js"></script>
<div id="result"></div>

答案 1 :(得分:0)

您可能正在使用2.6.0或更早版本的moment.js版本。版本2.7.0(在#1704中)引入了支持字符串作为输入的功能,并将数字放在具有addsubtract函数的单位之前。

如果你这样做可能会有效:

.subtract(reldate[1], +reldate[0])

注意订单已切换,+强制转换为编号。

然而,更好的想法是更新到当前版本,从本文开始是2.12.0。您的代码无需任何修改即可使用,许多其他增强功能,新功能和错误修复将是免费的。