如何使用moment.js从日期列表中获取最小或最大日期?

Sub*_*jit 21 javascript maxdate momentjs reactjs

我想从handleClick函数中给出的日期列表中获取最大日期.如何使用moment.js从日期列表中找到最大日期?

我有以下代码:

import React, {Component} from 'react';
import moment from 'moment';

class Getdate extends Component
{
  constructor() {
    super();
    this.state = {
       dates = []
    }
    this.handleClick = this.handleClick.bind(this);
  }
  handleClick() {
     this.state.dates = ['2017-11-12', '2017-10-22', '2015-01-10', '2018-01-01', '2014-10-10'];
     console.log(this.state.dates);
  }
  render{
    return (
     <button onClick={this.handleClick}>Get Max Date</button>
    )
  }
}
export default Getdate
Run Code Online (Sandbox Code Playgroud)

Jim*_*mmy 48

你可以使用moment.max函数:

let moments = this.state.dates.map(d => moment(d)),
    maxDate = moment.max(moments)
Run Code Online (Sandbox Code Playgroud)

  • 更简洁的是`this.state.dates.map(moment)` (4认同)
  • @DuncanThacker,不,请不要使用简洁的格式,因为它将向`moment`发送额外的参数,并导致** parse错误**。 (2认同)
  • @Aquazi 我所指的“额外参数”是`map` 函数的参数。这是一个展示错误的小提琴:https://jsfiddle.net/3qufbh5k/ 该错误是由第二个 `map(...)` 参数引起的,该索引会导致错误,因为 `moment(...) ` 需要一个字符串格式作为第二个参数 (2认同)
  • **请注意**,如果您碰巧将空列表传递给 `moment.max`,它会错误地返回当前日期,而不是像 `undefined` 这样更合理的值。 (2认同)