我有一段这样的代码:
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
我将从几分钟到几天减去范围,因此字符串必须是一个变量。
更令人费解的是,在我更新代码之前,这条确切的行完美运行了。但是,这些更改应该对代码的这一部分没有影响。
答案 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中)引入了支持字符串作为输入的功能,并将数字放在具有add
和subtract
函数的单位之前。
如果你这样做可能会有效:
.subtract(reldate[1], +reldate[0])
注意订单已切换,+
强制转换为编号。
然而,更好的想法是更新到当前版本,从本文开始是2.12.0。您的代码无需任何修改即可使用,许多其他增强功能,新功能和错误修复将是免费的。