我正在寻找比较ISO格式的两个日期(从文件动态接收) - 例如2011-12-14T17:22:52Z- 在Perl中.我该怎么做?
您展示的ISO 8601表示法的巨大优势在于它可以与字符串比较进行比较:
my $v1 = "2011-12-14T17:22:52Z";
my $v2 = "2012-01-03T19:13:49Z";
print "$v1 earlier than $v2\n" if $v1 lt $v2;
Run Code Online (Sandbox Code Playgroud)
这假设值都在祖鲁时间(Z是时区,也就是UTC).如果您有不同的时区,则需要规范化为单个时区(UTC是明智的选择),然后进行比较.
请仔细注意术语" 字符串比较 ".
在Perl中,<运营商比较两个数字.所呈现的数值将被钩,弯,或蛮力和无知强迫成一个数字.例如,if ("A" == "B")是的,因为"A"被视为数字是0,所以是"B".仅当您使用数字比较时,日期/时间字符串才会被视为数字是年份组件.
字符串比较操作(其助记符可能会在原有基础上的Fortran比较运算:lt,le,gt,ge,eq,ne和cmp)用于比较字符串.您可以使用数字比较器(<,<=,>,>=,!=,==和<=>)比较数字.小心区分您想要进行的比较类型.