小编ane*_*ane的帖子

如何使用Moment.js格式化持续时间?

鉴于UTC格式中的两个日期,我想执行以下操作:

var start = "2014-01-13T06:00:00.0000000Z";
var end = "2014-01-13T14:16:04.0000000Z";
Run Code Online (Sandbox Code Playgroud)

我希望得到这两次之间经过的确切时间跨度,例如

8h 16m
Run Code Online (Sandbox Code Playgroud)

我尝试过使用以下内容:

var duration = moment(moment(end) - moment(start)).format('hh[h] mm[m]');
Run Code Online (Sandbox Code Playgroud)

但这不适用于几天.此外,它几天都不起作用,因为即使<24小时过去它们总是> = 1.

我也尝试了twix.js来获取长度,但它的格式不支持创建上面指定的格式,或者我在文档中找不到这样做的方法.基本上我正在寻找一个确切的版本twix.humanizeLength().

Moment.jsa.diff(b)只提供总的持续时间,它可以给我时间跨度以分钟,小时或天数的长短,但使用不余计算.

目前的解决方案是使用diff创建范围,然后使用modulo来计算余数,但这不是很优雅:

var days = moment(end).diff(start, 'days');
var hours = moment(end).diff(start, 'hours') % 24;
var minutes = moment(end).diff(start, 'minutes') % 60;

var duration = ((days > 0) ? days + 'd ' : '') + ((hours > 0) ? hours + …
Run Code Online (Sandbox Code Playgroud)

javascript momentjs

9
推荐指数
2
解决办法
2万
查看次数

Underscore/Lo-Dash链中的应用函子 - 如何在地图内映射?

我有一个这样的嵌套对象:

var itemsWithQuantities = [
  {
    Identifier: 'SomethingWithQuantities1',
    Quantities: [
      { Name: 'Quantity 1', Amount: 4 },
      { Name: 'Quantity 2', Amount: 1 },
      { Name: 'Quantity 3', Amount: 3 }
    ]
  },
  {
    Identifier: 'SomethingWithQuantities2',
    Quantities: [
      { Name: 'Quantity 1', Amount: 3 },
      { Name: 'Quantity 2', Amount: 2 },
      { Name: 'Quantity 3', Amount: 5 }
    ]
  }
];
Run Code Online (Sandbox Code Playgroud)

问题:我想将所有'Amount'对象折叠在一起,以获得[7, 3, 8],将其视为该Amount字段的水平和.我想用方法链干净利落地做这件事.

没有方法链接的现有解决方案是这样的:

var amountSumsNoChain = _.reduce(_.map(itemsWithQuantities, function(item) …
Run Code Online (Sandbox Code Playgroud)

javascript functional-programming underscore.js lodash

2
推荐指数
1
解决办法
765
查看次数