📅  最后修改于: 2023-12-03 15:08:20.260000             🧑  作者: Mango
在 JavaScript 中,我们可以使用 Math.min()
和 Math.max()
方法来选择数组中的最小和最大值。下面我们将通过几个例子来演示如何在数组中选择最小和最大日期。
假设我们有一个日期数组如下:
const dates = ["2021-01-01", "2021-01-02", "2021-01-03", "2020-12-31", "2021-01-04"];
我们可以使用 Math.min()
方法和 new Date()
构造函数来选择其中的最小日期,代码如下:
const minDate = new Date(Math.min(...dates.map(d => new Date(d))));
console.log(minDate);
上述代码中,我们使用了 ES6 中的扩展运算符 ...
来将数组转换成参数序列,然后通过 map()
方法将日期字符串转换成 Date
对象。最后,我们通过 Math.min()
方法选择其中的最小值,并将其转换成 Date
对象。
运行上述代码,我们得到的输出结果为:
Fri Dec 31 2020 00:00:00 GMT+0800 (中国标准时间)
同样地,我们也可以使用 Math.max()
方法和 new Date()
构造函数来选择数组中的最大日期,代码如下:
const maxDate = new Date(Math.max(...dates.map(d => new Date(d))));
console.log(maxDate);
上述代码中,我们仅仅是将前面的 Math.min()
改成了 Math.max()
。运行上述代码,我们得到的输出结果为:
Mon Jan 04 2021 00:00:00 GMT+0800 (中国标准时间)
在实际开发中,我们有可能会遇到混合了日期和时间的数组,甚至混合了日期和时间的格式,例如:
const mixedDates = ["2021-01-01T09:30:00", "2021-01-02T15:45:00", "2021-01-03T23:00:00", "2020-12-31T05:20:00", "2021-01-04T12:00:00"];
为了选择其中的最小日期和最大日期,我们需要对前面的代码稍加修改:
const minDate2 = new Date(Math.min(...mixedDates.map(d => new Date(d))));
const maxDate2 = new Date(Math.max(...mixedDates.map(d => new Date(d))));
console.log(minDate2, maxDate2);
上述代码中,我们仍然是先将日期字符串转换成 Date
对象,但此时的日期字符串可能包括了时间信息,因此需要使用 map()
方法来进行转换。运行上述代码,我们得到的输出结果为:
Thu Dec 31 2020 05:20:00 GMT+0800 (中国标准时间) Tue Jan 05 2021 00:00:00 GMT+0800 (中国标准时间)
从上面的输出结果可以看出,我们已经成功地选择了混合日期数组中的最小日期和最大日期。