【发布时间】:2019-09-27 00:27:11
【问题描述】:
我正在使用时刻库,从前端我在HH:mm 获得时间我需要使用时刻将小时和分钟添加到当前时间。
假设我从前端得到05:30,我需要添加到当前的UTC时间。如何使用 momentjs 做到这一点?
我试过了,但没用
moment().add('05:30', 'HH:mm')
【问题讨论】:
标签: javascript timezone momentjs
我正在使用时刻库,从前端我在HH:mm 获得时间我需要使用时刻将小时和分钟添加到当前时间。
假设我从前端得到05:30,我需要添加到当前的UTC时间。如何使用 momentjs 做到这一点?
我试过了,但没用
moment().add('05:30', 'HH:mm')
【问题讨论】:
标签: javascript timezone momentjs
尝试使用
moment.add(5,'hours').add(30,'minutes').format('HH:mm')
或
moment().add({hours:5, minutes: 30}).format('HH:mm')
【讨论】:
您可以使用moment.duration(String) 和使用add(Duration) 为'05:30' 创建duration。
正如 moment duration 文档所述,'05:30' 是 moment.duration(String) 的有效输入:
从 2.1.0 开始,moment 支持解析 ASP.NET 样式时间跨度。支持以下格式。
格式是用冒号分隔的小时、分钟、秒字符串,例如
23:59:59。天数可以用点分隔符作为前缀,例如7.23:59:59。也支持部分秒23:59:59.999。
这是一个现场样本:
const result = moment().add( moment.duration('05:30') );
console.log( moment().format() );
console.log( result.format() );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
【讨论】:
0530。现在它不工作了。有什么想法吗?
var input = '0530'; var output = str.substring(0, 2) + ':' + str.substring(2),但可能有很多极端情况)
var t = '05:30';
var hours = parseInt(t.substr(0,2));
var minutes = parseInt(t.substr(3,5));
moment().add(hours,'hours').add(minutes,'minutes');
【讨论】:
Moment 拥有.add 属性
moment().add(1, 'day')
参考:http://momentjs.com/docs/#/manipulating/add/
用于转换为特定格式:
moment().add({hours:5, minutes: 30}).format('HH:mm')
【讨论】:
编辑:上面的@VincenzoC 提供了我个人认为的最佳实践。检查此答案仅作为他的替代答案。
只要做:
moment().add({
hours: 5,
minutes: 30
});
官方文档建议:http://momentjs.com/docs/#/manipulating/add/
要么使用上面的对象字面量,要么使用链接。
我无法摆脱那个字符串,只需通过拆分获得小时和分钟:
let [hours, minutes] = '05:30'.split(':').map(Number);
console.log(hours);
console.log(minutes);
【讨论】: