如果我有一个像"15:30"这样的字符串,我如何将其转换为"17:10">
我尝试了以下操作:
time = '15:30'
moment(time)
.add(40, 'minutes')
.add(2, 'hours')
.format('HH:mm')
但是它没有工作,并且它输出错误"0";无效日期";。
首先,您需要解析字符串数据,我们知道我们使用的是有效小时。
const time = '15:30' // Valid date
const time = '252:10' // Invalid date
你可以在矩函数中使用第二个参数,类似这样:
moment(time, "HH:mm");
您只需要知道将字符串转换为什么格式,请参阅此文档链接中的更多内容。
然后,您可以占用不同的构建器来获得预期的结果。
moment(time, "HH:mm") // Parse the string
.add(40, 'minutes') // Add 40 minutes
.add(2, 'hours') // Add 2 hours
.format('HH:mm') // Format to specified format
最后你会得到你的约会时间解析。
这是一个工作版本:
const time = '15:30'
const date = moment(time, "HH:mm").toDate();
const parsedDate = moment(date)
.add(40, 'minutes')
.add(2, 'hours')
.format('HH:mm')
console.log(parsedDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>
将2小时30分钟添加到15:30小时将获得18:10小时-也不使用moments.js:
const time=new Date(2022,1,1,15,30); // define initial datetime object
time.setHours(time.getHours()+2);
time.setMinutes(time.getMinutes()+40);
console.log(time.toTimeString().slice(0,5));
另一种解决问题的方法,包括Date.prototype
定义,可以是:
Date.prototype.add=function(n,unit){ this["set"+unit](+this["get"+unit]()+n); return this; }
console.log(new Date(2022,1,1,15,30)
.add(2,"Hours")
.add(40,"Minutes")
.toTimeString()
.slice(0,5) );
在各方提出抗议之前:是的,我明白了:扩展内置类的原型被认为不是好的编程风格。因此,上面的例子应该被视为原型函数机制如何在JavaScript中工作的演示,可能不应该被纳入实际项目中。