如何在MomentJs中将分钟和小时添加到字符串中



如果我有一个像"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中工作的演示,可能不应该被纳入实际项目中。

相关内容

  • 没有找到相关文章

最新更新