我有几千个字符串属性的对象,格式为"yyyy-MM-ddTHH:mm:ssZ"
。我想按时间对这些对象进行排序。
是否有任何有用的软件包或脚本?
(目前我只是比较单个数字值,看起来它不是很有效和整洁。)
答案 0 :(得分:7)
sort
按字典顺序排序。它满足您的需求。
@sorted = sort @timestamps;
答案 1 :(得分:5)
该格式的时间戳可以按字典顺序排序,因此正常的perl“sort”和字符串比较函数“cmp”就足够了。
答案 2 :(得分:3)
您可以使用Time :: Local将日期转换为时间戳或cpan中的Date :: modules之一。您可以查看this以查看可用内容。
另请注意,使用上述格式排序对象lexicographicaly也可以解决问题(即使可能比比较数字慢一些,但初始转换有成本)。
如果您使用来自世界各地的日期,请务必小心,因为您可能会遇到时区和夏令时的排序问题。如果所有日期时间都在同一个地方,则应该没问题。
答案 3 :(得分:0)
如果你的字符串格式是严格的,你可以使用以下子程序来整理你的日期列表。
sub timeSort {
my ($time) = ( shift =~ /\d{2}:\d{2}:\d{2}/ );
return $time;
}
my @sortedList = sort { timeSort($a) <=> timeSort($b) } @oldList;