我有一个SP2010列表,其中包含一个包含日期的列。 (创建日期)。
我使用以下格式提供的Spservices来提取这些内容。 YYYY.MM.DD 00:00。
在主要功能中读取列表时我将日期拆分为剩下的所有内容为YYYY.MM.DD
dateAdded = ($(this).attr("ows_DatumActualiteit")).split(" ")[0];
然后将日期推入数组以便以后过滤。
function selectMostRecentAct(datesIn){
var dateArray = [];
dateArray.push(datesIn);
for (var i = 0; i < dateArray.length; i++) {
console.log(dateArray[i]); //spits out all the dates in the array.
};
我想在此数组中选择最近的日期。
我怎样才能做到这一点?
提前致谢,赞赏它。
答案 0 :(得分:1)
这个问题与您的问题类似: What is the elegant way to get the latest date from array of objects in client side?
另一种方法是遍历整个数组并比较日期。据我所知,你可以使用&lt ;,&gt;,==运算符和日期。
dateArray.forEach((e) => {
if (e > latestDate)
latestDate = e;
});
console.log('Latest date is: ' + latestDate);
答案 1 :(得分:1)
您需要对值进行排序,然后获取第一个元素。
我假设您的日期格式,但new Date
非常宽松,应该接受最合理的输入。
const dates = [
"2018-03-01T10:30:12.000Z",
"2018-03-01T12:11:49.000Z",
"2018-03-12T15:54:49.000Z",
"2018-03-09T19:12:49.000Z",
"2018-03-03T01:41:49.000Z",
];
const selectMostRecent = dates =>
dates.sort((a, b) => new Date(b) - new Date(a))[0];
console.log(selectMostRecent(dates));
&#13;
Sort需要一个返回值为positive,negative或zero的比较函数。当您对日期值执行算术时,它将转换为纪元时间(例如1522096404277,自1970年1月1日起的毫秒数),然后减去这些值会为我们提供所需的有符号值。
例如,
2018-03-09T19:12:49.000Z
返回1520622769000
2018-03-03T01:41:49.000Z
返回1520041309000
当我们2018-03-09T19:12:49.000Z - 2018-03-03T01:41:49.000Z
(但是如上所述那些被强制转换为数字)时,我们得到581460000
,这意味着第一个日期的排序高于后者。
答案 2 :(得分:0)
也许是这样的:
dateArray
.map(d => new Date(d.replace(/\./g, "-"))) // ISO format
.sort((a, b) => b - a) // Newest to oldest, probably
[0] // First!
答案 3 :(得分:0)
这使用max
的可重用函数;它应该适用于您可以与>
进行比较的任何值。请注意,它要求您设置最小值。对于字符串,""
(空字符串)似乎是合适的。对于数字,您可以使用-Infinity
,但Math.max
已涵盖该情况。对于实际日期(不是这些日期格式化为字符串),您可以选择任何可以想象的值之前的日期,可能类似于new Date(-1e15)
。
const max = (min) => vals => vals.reduce((curr, val) => val > curr ? val : curr, min)
const maxDate = max('')
console.log(
maxDate(['2014.07.23', '2014.08.29', '2007.03.25', '2017.09.30', '2008.02.29'])
)
&#13;