ReactJS, 如何使用moment.js从数组中获取最老和最新的日期?

问题描述 投票:0回答:2

我有一个数组,我想从一个给定的范围内获取最老和最新的日期。

DatosFechas = ["2020-04-29", "2020-04-19", "2020-04-07", "2020-04-30", "2020-04-30", "2018-01-22"]

我想从一个给定的范围内获取最老或最新的日期。

Ths函数,试图获得工作。

function ObtenerMaxMinRangoFechas(DatosFechas) {
    let moments = DatosFechas.map(x => moment(x)),
    maxDate = moment.max(moments)
    return maxDate

}

谢谢

我的日期数组比较长,只是为了这个帖子的目的,它被缩小了。

这就是错误。

enter image description here

没有给我最大日期。

javascript momentjs
2个回答
2
投票

返回的 maxDate 变量实际上是一个 Moment 对象。你可以简单地对它进行格式化,以获得所需的结果,比如。

const DatosFechas = ["2020-04-29", "2020-04-19", "2020-04-07", "2020-04-30", "2020-04-30", "2018-01-22"]
function ObtenerMaxMinRangoFechas(DatosFechas) {
    let moments = DatosFechas.map(x => moment(x)),
    maxDate = moment.max(moments)
    return maxDate.format('YYYY-MM-DD')
}

console.log( ObtenerMaxMinRangoFechas(DatosFechas) )
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.1/moment.min.js"></script>

1
投票

对日期数组进行排序,抓住最后一个。

DatosFechas = ["2020-04-29", "2020-04-19", "2020-04-07", "2020-04-30", "2020-04-30", "2018-01-22"]
const sortedDates = DatosFechas.sort((a, b) => moment(a) - moment(b));
console.log('NEWEST Date',sortedDates[sortedDates.length-1])
console.log('OLDEST Date',sortedDates[0])

注意:你并不真的需要 moment 对于你的情况。你可以使用js内置的 Date 功能。见 此处



1
投票

你做得很好,你做得很对。只是问题是,你必须形成你的回报率 moment 对象,而不是将其作为对象返回。

使用it-

function ObtenerMaxMinRangoFechas(DatosFechas) {
    const moments = DatosFechas.map(x => moment(x));
    const maxDate = moment.max(moments);
    return maxDate.format('YYYY-MM-DD');
}

1
投票

你想以什么格式返回首尾日期?这里有一个例子,是一个首尾字符串的数组。

let dates = ["2020-04-29", "2020-04-19", "2020-04-07", "2020-04-30", "2020-04-30", "2018-01-22"]

const getFirstAndLastDate = (dates) => {
  dates = dates.sort()
  return [dates[0], dates[dates.length - 1]]
}

console.log(getFirstAndLastDate(dates))

1
投票

Moment.max 似乎要返回一个 矩物 而非 绳子 为了得到字符串格式,你需要调用format并传递你想要的格式,就像这样。

moment.format('YYYY-MM-DD')  

让我们把这个放在一起。

function ObtenerMaxMinRangoFechas(DatosFechas) {
    let moments = DatosFechas.map(x => moment(x)),
    maxDate = moment.max(moments).format('YYYY-MM-DD');
    return maxDate
}
© www.soinside.com 2019 - 2024. All rights reserved.