JavaScript在reactJS中使用的以瞬间为单位减去时间

JavaScript在reactJS中使用的以瞬间为单位减去时间,javascript,reactjs,momentjs,Javascript,Reactjs,Momentjs,我使用的是React Js,我想使用力矩库在JavaScript中执行减法时间 我尝试了以下代码: timecheck(){ var time1 = moment().format("09:00:00"); var time2 = moment().format("00:03:15"); var timeStr = time2.split(':'); var h = timeStr[0]; var m = timeS

我使用的是React Js,我想使用力矩库在JavaScript中执行减法时间

我尝试了以下代码:

timecheck(){
    var time1 = moment().format("09:00:00");
    var time2 = moment().format("00:03:15");
    var timeStr = time2.split(':');
    var h = timeStr[0];
    var m = timeStr[1];
    var s = timeStr[2];

    var time3 = moment(time1).subtract({'hours': h, 'minutes': m, 'second': s}).format('hh:mm:ss');
    console.log(time3);
  }
上面的代码是我的timecheck函数,我想执行time3=time1-time2,它将控制台日志记录为InvalidDate

我可以知道我的语法错误在哪里吗?

我注意到h、m和s变量是字符串而不是数字。你似乎想要数字而不是字符串。 试试像这样的东西

var h = timeStr[0] - 0;
或者您最喜欢的将字符串强制转换为数值的方式。

我注意到您的h、m和s变量是字符串而不是数字。你似乎想要数字而不是字符串。 试试像这样的东西

var h = timeStr[0] - 0;
或者您最喜欢的将字符串强制转换为数值的方法。

您只需使用.subtract函数即可获得所需的结果。您不需要使用split或类似的工具

此外,我们还需要在矩对象中将要减去的时间的格式定义为hh:mm:ss,否则您将收到弃用警告

设time1=moment09:00:00,hh:mm:ss; 设time2=moment00:03:15,hh:mm:ss; 让subtract=time1.subtracttime2; 设格式=动量减法。格式hh:mm:ss console.logformat//08:56:45 您只需使用.subtract函数即可获得所需的结果。您不需要使用split或类似的工具

此外,我们还需要在矩对象中将要减去的时间的格式定义为hh:mm:ss,否则您将收到弃用警告

设time1=moment09:00:00,hh:mm:ss; 设time2=moment00:03:15,hh:mm:ss; 让subtract=time1.subtracttime2; 设格式=动量减法。格式hh:mm:ss console.logformat//08:56:45
力矩具有差分函数:

var time1 = moment("09:00:00", "hh:mm:ss");
var time2 = moment("00:03:15", "hh:mm:ss");
var diff = time2.diff(time1);
diff是两个日期之间的毫秒数。那么,它应该只是一个例子:

var time3 = moment(diff).format('hh:mm:ss');

有关更多详细信息,请参阅。

力矩有一个不同的功能:

var time1 = moment("09:00:00", "hh:mm:ss");
var time2 = moment("00:03:15", "hh:mm:ss");
var diff = time2.diff(time1);
diff是两个日期之间的毫秒数。那么,它应该只是一个例子:

var time3 = moment(diff).format('hh:mm:ss');


有关更多详细信息,请参阅。

减法后您的预期输出是什么?您好@AlwaysHelping我希望使用“hh:mm:ss”格式我明白!但是减法后你最后的预期时间是多少?@AlwaysHelping所以它是9小时减去3分15秒它将是8小时:56分钟:45秒之类的或者'08:56:45'减法后你预期的输出是什么?嗨@AlwaysHelping我想用'hh:mm:ss'格式我明白了!但是减法后你最后的时间是多少?@Alwayshelling所以它是9小时减去3分15秒它将是8小时:56分钟:45秒类似的时间或'08:56:45'所以我这里缺少parse int?你可以使用parseInt。记住指定基数10,因此:var h=parseInttimestr[0],10;我这里缺少parseInt?你可以用parseInt。记住指定基数10,因此:var h=parseInttimestr[0],10;这是一个非常复杂的解决方案,这可以简单地用减法函数来实现。请参阅下面我的答案=>简单的两行代码!这是一个非常复杂的解决方案,这可以简单地用减法函数来实现。请参阅下面我的答案=>简单的两行代码!这不是下面的有效解决方案。请检查您的代码!它将抛出一个错误。仅供参考-错误已修复。解决方案不在你的评论范围之内。只是FYIThis不是下面的有效解决方案。请检查您的代码!它将抛出一个错误。仅供参考-错误已修复。解决方案不在你的评论范围之内。仅供参考,解决方案有效,但我不确定为什么我得到的是04:26:45而不是08:56:45@Lawraoke真正地我的回答是08:56:45,这是正确的!你确定你做得对吗?是的,这就是为什么我不确定为什么答案不同:,但是,我运行了你的代码片段,它是08:56:45,当我尝试我的js文件时,它是04:26:45,但它是好的,我会整理剩下的:let format=moment.utcsubtract.formathh:mm:ss将其视为UTC@Lawraoke对但也有一个简洁明了的解决方案。您可以使用isBefore或isAfter之类的矩函数来检查一次比较是否大于另一次比较。希望这有帮助。是的,解决方案有效,但是我不确定为什么我得到的是04:26:45而不是08:56:45@Lawraoke真正地我的回答是08:56:45,这是正确的!你确定你做得对吗?是的,这就是为什么我不确定为什么答案不同:,但是,我运行了你的代码片段,它是08:56:45,当我尝试我的js文件时,它是04:26:45,但它是好的,我会整理剩下的:let format=moment.utcsubtract.formathh:mm:ss将其视为UTC@Lawraoke对但也有一个简洁明了的解决方案。您可以使用isBefore或isAfter之类的矩函数来检查一次比较是否大于另一次比较。希望这有帮助。