首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在perl中查找最新日期的索引

在perl中查找最新日期的索引
EN

Stack Overflow用户
提问于 2014-05-26 05:46:23
回答 2查看 109关注 0票数 0

我有一系列的日期‘YYYY-月’,比如‘2013-12月’,‘2014-5月’等等。我需要在数组中找到最近日期的索引。有没有内置的模块来做这件事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-26 05:50:56

使用Time::Piece strptime解析日期。

然后使用date comparisons确定哪一个是最新的。

代码语言:javascript
复制
use strict;
use warnings;

use Time::Piece;
use List::Util qw(reduce);

my @strings = qw(2013-Dec 2014-May 2014-Jan 2014-Feb 2014-Jan);
my @dates = map {Time::Piece->strptime($_, "%Y-%b")} @strings;

my $maxid = reduce {$dates[$b] > $dates[$a] ? $b : $a} (0..$#dates);

print "$strings[$maxid]\n"

产出:

代码语言:javascript
复制
2014-May
票数 1
EN

Stack Overflow用户

发布于 2014-05-26 06:57:21

如果您不想使用任何模块,那么使用下面的代码。

代码语言:javascript
复制
#!/usr/bin/perl
# your code goes here
use strict;
use warnings;
my @dates = ( '2013-Dec', '2014-May', '1992-July', '2014-Jan' );
my @sorted_dates = sort { (split /\-/, $a)[0] <=> (split /\-/, $b)[0] ||
                          (split /\-/, $a)[1] cmp (split /\-/, $b)[1] 
                        } @dates;
print "Latest date is ".$sorted_dates[-1]. " index is $#sorted_dates";

Demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23863469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档