gpt4 book ai didi

perl - 如何在 dd :mm:yyyy hh24:mi:ss format in descending order in Perl? 中对时间戳进行排序

转载 作者:行者123 更新时间:2023-12-03 15:18:18 24 4
gpt4 key购买 nike

我必须对我的哈希键进行排序,这是一个时间戳 (dd:mm:yyyy hh24:mi:ss)按降序排列。

sort { $b <=> $a } keys %time_spercent

这种方式并没有让我做我打算做的事情。相反,即使日期不是这样,这也会以较高的小时和分钟排序结束。例如,这就是我在进行我提到的排序时得到的结果。
21:01:2011 16:51:09
21:01:2011 16:49:54
26:01:2011 11:02:55
26:01:2011 11:01:40
05:04:2011 11:51:13
05:04:2011 11:51:13
05:04:2011 11:48:37
05:04:2011 11:48:37

相反,我希望它们按日期和时间排列。
05:04:2011 11:51:13
05:04:2011 11:51:13
05:04:2011 11:48:37
26:01:2011 11:02:55
26:01:2011 11:01:40
05:04:2011 11:48:37
21:01:2011 16:51:09
21:01:2011 16:49:54

任何关于如何做到这一点的建议将不胜感激。

更新
foreach my $status_date( 
map { $_->[0] }
sort { $b->[1] cmp $a->[1] }
map { [$_, sorting_desc($_)] } keys % {$com_sam->{ $s1 } } )


sub sorting_desc {
$_ = shift;
if (/(\d+):(\d+):(\d+) (\d+):(\d+):(\d+)/) {
return "$2:$1:$3:$4:$5:$6";
}
}

是排序的子程序。

我也试过
foreach my $status_date( 
map { $_->[0] }
sort { $b->[1] cmp $a->[1] }
map { [$_, (split/[:\s][1]] } keys % {$com_sam->{ $s1 } } )

但不是预期的结果。

我得到的是:
WGA_PD7124a WGA_PD7124a     95(2)   95(2)   95      100.00  193     Unknown(Unknown)        192654  01:07:2011 16:13:55
WGA_PD7124a WGA_PD7124a 95(2) 95(2) 95 100.00 193 Unknown(Unknown) 192655 01:07:2011 16:11:23
WGA_PD7124a WGA_PD7124a 95(2) 95(2) 95 100.00 193 Male(Unknown) 192656 01:07:2011 11:04:26
WGA_PD6355b WGA_PD6355b 96(1) 96(1) 96 100.00 388 Unknown(Unknown) 184558 04:05:2011 17:35:52
WGA_PD6355b WGA_PD6355a 96(1) 66(31) 66 95.45 388 Unknown(Unknown) 184558 04:05:2011 17:35:52
WGA_PD6355b WGA_PD6355b 96(1) 96(1) 96 100.00 388 Unknown(Unknown) 184557 04:05:2011 17:34:27
WGA_PD6355b WGA_PD6355a 96(1) 66(31) 66 95.45 388 Unknown(Unknown) 184557 04:05:2011 17:34:27
3074 3074 87(10) 87(10) 87 100.00 109 Unknown(Unknown) 174878 15:02:2011 09:24:31
3074 3074 87(10) 87(10) 87 100.00 109 Unknown(Unknown) 174970 15:02:2011 09:21:19
3074 3074 87(10) 87(10) 87 100.00 109 Female(Unknown) 174860 15:02:2011 09:16:32
3163 3163 90(7) 90(7) 90 100.00 176 Unknown(Unknown) 173382 09:02:2011 09:54:48
3163 3163 90(7) 90(7) 90 100.00 176 Unknown(Unknown) 173284 09:02:2011 09:51:02
CHP-212 CHP-212 94(3) 94(3) 94 100.00 269 Unknown(Unknown) 173382 09:02:2011 09:54:48
CHP-212 CHP-212 94(3) 94(3) 94 100.00 269 Unknown(Unknown) 173284 09:02:2011 09:51:02
MGH_2631 MGH_2631 90(8) 90(8) 90 100.00 211 Male(Unknown) 200943 01:09:2011 10:48:18
MGH_2631 MGH_2631 90(8) 90(8) 90 100.00 211 Unknown(Unknown) 200944 25:08:2011 10:20:16
MGH_2631 MGH_2631 90(8) 90(8) 90 100.00 211 Unknown(Unknown) 200945 25:08:2011 10:19:05
MGH_2631 MGH_2631 90(8) 90(8) 90 100.00 211 Male(Unknown) 200946 25:08:2011 10:17:26
MGH_2101 MGH_2101 80(18) 80(18) 80 100.00 359 Male(Unknown) 200943 01:09:2011 10:48:18
MGH_2101 MGH_2101 80(18) 80(18) 80 100.00 359 Unknown(Unknown) 200944 25:08:2011 10:20:16
MGH_2101 MGH_2101 80(18) 80(18) 80 100.00 359 Unknown(Unknown) 200945 25:08:2011 10:19:05
MGH_2101 MGH_2101 80(18) 80(18) 80 100.00 359 Male(Unknown) 200946 25:08:2011 10:17:26
PD4294c PD4294c 95(2) 95(2) 95 100.00 221 Unknown(Unknown) 179502 23:03:2011 10:03:23
PD4294c PD4294c 95(2) 95(2) 95 100.00 221 Unknown(Unknown) 179470 23:03:2011 10:02:30

最佳答案

你能把你的格式改成 yyyy:mm:dd hh24:mi:ss ?那时你会有一个自然的排序。基本上,按重要性降序排列所有内容对机器更友好:)

编辑:然后只需使用字符串比较排序,因为它自然会以正确的方式排序。

关于perl - 如何在 dd :mm:yyyy hh24:mi:ss format in descending order in Perl? 中对时间戳进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com