如何在Perl中对时间戳进行排序?

时间:2010-03-21 15:05:50

标签: perl comparison timestamp

我有几千个字符串属性的对象,格式为"yyyy-MM-ddTHH:mm:ssZ"。我想按时间对这些对象进行排序。

是否有任何有用的软件包或脚本?

(目前我只是比较单个数字值,看起来它不是很有效和整洁。)

4 个答案:

答案 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;