量角器:如何按 date/time 对列表进行排序?
Protractor: How to sort a list by date/time?
如何按 date/time 对列表进行排序?
在我的应用程序中,date/time 格式是“星期一,11 月 1 日 | 8:30 下午”,当我尝试将字符串转换为日期时得到无效日期 o/p。
帮我按 date/time.
对列表进行排序
date/time“11 月 1 日星期一 | 8:30 下午”没有 'year'
enter image description here
我已经对“|”进行了硬编码和修整来自 date/time 格式的字符。能够排序参考下面的片段。
根据以下评论,getTime() o/p 可能因浏览器而异
let unsortedDate = [ "Tue, Nov 2 6:25 PM",
"Wed, Oct 28 12:30 AM",
"Mon, Nov 8 3:05 AM",
"Mon, Nov 1 8:30 PM"];
var sort = [];
unsortedDate.forEach(date => {
sort.push([ date, new Date(date).getTime() ]);
})
console.log(sort);
sort.sort( (a, b) => a[1] - b[1] );
let sorted_array = sort.map(arr => arr[0])
console.log(sorted_array)
您可以将字符串解析为按需要排序的值。如果年份不重要,那就更容易了。
将月份转换为数字,将小时转换为 24 小时制,然后填充为两位数,例如“11 月 1 日星期一 | 8:30 下午”变为 11012030。
例如
function parseMyDate(s) {
let z = n => ('0'+n).slice(-2);
let months = {jan:'01',feb:'02',mar:'03',apr:'04',may:'05',jun:'06',
jul:'07',aug:'08',sep:'09',oct:'10',nov:'11',dec:'12'};
let [d, M, D, H, m, ap] = s.toLowerCase().split(/\W+/);
return `${months[M]}${z(D)}${z(H%12 + (ap == 'am'?0:12))}${z(m)}`;
}
let d = 'Mon, Nov 1 | 8:30 PM';
console.log(`${d} -> ${parseMyDate(d)}`); // 11012030
let data = ['Mon, Nov 1 | 8:30 PM',
'Mon, Nov 1 | 12:00 PM',
'Sun, Oct 30 | 8:30 AM',
'Mon, Nov 1 | 8:30 AM'];
console.log(data.sort((a, b) => parseMyDate(a) - parseMyDate(b)));
如何按 date/time 对列表进行排序? 在我的应用程序中,date/time 格式是“星期一,11 月 1 日 | 8:30 下午”,当我尝试将字符串转换为日期时得到无效日期 o/p。 帮我按 date/time.
对列表进行排序date/time“11 月 1 日星期一 | 8:30 下午”没有 'year'
enter image description here
我已经对“|”进行了硬编码和修整来自 date/time 格式的字符。能够排序参考下面的片段。 根据以下评论,getTime() o/p 可能因浏览器而异
let unsortedDate = [ "Tue, Nov 2 6:25 PM",
"Wed, Oct 28 12:30 AM",
"Mon, Nov 8 3:05 AM",
"Mon, Nov 1 8:30 PM"];
var sort = [];
unsortedDate.forEach(date => {
sort.push([ date, new Date(date).getTime() ]);
})
console.log(sort);
sort.sort( (a, b) => a[1] - b[1] );
let sorted_array = sort.map(arr => arr[0])
console.log(sorted_array)
您可以将字符串解析为按需要排序的值。如果年份不重要,那就更容易了。
将月份转换为数字,将小时转换为 24 小时制,然后填充为两位数,例如“11 月 1 日星期一 | 8:30 下午”变为 11012030。
例如
function parseMyDate(s) {
let z = n => ('0'+n).slice(-2);
let months = {jan:'01',feb:'02',mar:'03',apr:'04',may:'05',jun:'06',
jul:'07',aug:'08',sep:'09',oct:'10',nov:'11',dec:'12'};
let [d, M, D, H, m, ap] = s.toLowerCase().split(/\W+/);
return `${months[M]}${z(D)}${z(H%12 + (ap == 'am'?0:12))}${z(m)}`;
}
let d = 'Mon, Nov 1 | 8:30 PM';
console.log(`${d} -> ${parseMyDate(d)}`); // 11012030
let data = ['Mon, Nov 1 | 8:30 PM',
'Mon, Nov 1 | 12:00 PM',
'Sun, Oct 30 | 8:30 AM',
'Mon, Nov 1 | 8:30 AM'];
console.log(data.sort((a, b) => parseMyDate(a) - parseMyDate(b)));