谁能告诉我,如何排序时间在javascript中只使用sort(),然后切换大小写()


{"09:12p","08:00a","12:00a","04:00"} 

在这里输入图像描述试1:

case 'clockInEndTime':
if (a.clockInEndTime.getTime().toString() == b.clockInEndTime.getTime().toString()) {
return (new Date(a.scheduledStartDate || a.date) < new Date(b.scheduledStartDate || b.date)) ? -1 : (new Date(a.scheduledStartDate || a.date) > new Date(b.scheduledStartDate || b.date)) ? 1 : 0;
} else {
return (a.clockInEndTime.getTime().toString() < b.clockInEndTime.getTime().toString()) ? -1 : 1;
}

您可以对Array.sort()这样做,但是您需要提供一个函数来创建每个时间戳的客观度量。下面我们将其转换为分钟,您也可以将其转换为小时等。

转换为可比较的一天中经过的时间度量后,可以使用.sort()按升序或降序排序。

注意,我们在这里使用[…]进行浅复制。来确保对数组的副本进行排序。

const times = [ '10:00a', '11:00a', '12:00a', '01:00a', '02:00a'];
function timeToMinutes(input) {
if (!input) {
return 0;
}
let [_ ,hour, minute, meridiem ] = input.match(/(d{1,2}):(d{1,2})([ap])?/i);
hour = Number(hour) + (meridiem === 'p' ? 12: 0);
return hour * 60 + Number(minute);
}
const sortedAsc = [...times].sort((a, b) => timeToMinutes(a) - timeToMinutes(b));
const sortedDesc = [...times].sort((a, b) => timeToMinutes(b) - timeToMinutes(a));
console.log('Sorted (ascending):', sortedAsc);
console.log('Sorted (descending):', sortedDesc);

相关内容

  • 没有找到相关文章

最新更新