我有一个开始时间,我想增加一个结束时间。例如
startTime=19:09
endTime=00:51 // 0 hours and 51 minutes
我想在19:09上添加51分钟,使其成为20:00。
我已经尝试了多种不同的情况来显示风箱,但是没有任何东西可以给我正确的时间
我试过了
let [hour, minute] = endTime.split(':').map(Number);
this.endTime = Moment(startTime)).add({ hour: 'hours', minute: 'minutes' }) // also tried .add(hour,'hours').add(minute,'minutes')
仍然输出19:09。它只是无视我的结束时间
我试过了
Moment(endTime, 'hh:mm').add(Moment.duration(startTime)).format("hh:mm");
当我应该是20:00时,输出为08:00
我究竟做错了什么?我想将结束时间添加到开始时间。请记住,我的endTime总是在变化,因此有时可能是13:05等导致用户输入
您的代码存在三个主要问题:
moment('19:09')
像您那样仅创建带有时间戳的时刻(即没有日期的时刻)会被弃用并引发错误。您要么必须以RFC2822或ISO格式传递完全指定的时间戳,要么明确告诉库您正在使用哪种输入格式。
add()
从字面上传递给函数的对象是
{
hour: "hours",
minute: "minutes"
}
即,不是传递小时和分钟的数值来添加到您的时刻,而是传递了字符串"hours"
和"minutes"
,这显然是momentsjs无法处理的。
该格式hh:mm
仅接受从0
到的小时12
。如果您想要24小时制,则必须使用HH:mm
考虑到这些问题,以下代码片段按预期工作:
let start = '2021-01-07 19:09',
duration = '0:51',
starttime = '19:09';
let [hour, minute] = duration.split(":");
//shorthand initialization for the argument
let endtime1 = moment(start).add({hour, minute}).toString();
//explicit definition of property names
let endtime2 = moment(start).add({hours: hour, minutes: minute}).toString();
//add hours and minutes separately
let endtime3 = moment(start).add(hour, "hours").add(minute, "minutes").toString();
//provide a format for the timestamp. momentsjs will take the current date for the date value
let endtime4 = moment(starttime, "HH:mm").add(hour, "hours").add(minute, "minutes").toString();
console.log(endtime1);
console.log(endtime2);
console.log(endtime3);
console.log(endtime4);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
还请记住,要指定要操纵时间戳的哪个部分,可以使用单数形式或复数形式。即
moment(...).add(4, "hour").add(17, "minute")
和 moment(...).add({hour: 4, minute: 17})
相当于
moment(...).add(4, "hours").add(17, "minutes")
和 moment(...).add({hours: 4, minutes: 17})
分别在创建endtime1
和的代码段中也可以看到endtime2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句