如何在不导入外部模块的情况下在Perl中转换日期格式?

如何在不导入外部模块的情况下在Perl中转换日期格式?,第1张

概述可能是一个简单的答案:如何在不导入外部模块的情况下进行转换?我已阅读CPAN但无法明确指出执行以下 *** 作的方法: Convert: 20080428 to 28-APR-08 有任何想法吗? 即使指导我阅读教程也会受到赞赏. 问候, PIAS 此代码在Y10k中失败,但这应该足够好了.正则表达式可能更严格,但如果日期已经过验证(或将以新表格验证),则无关紧要. #!/usr/bin/perlus 可能是一个简单的答案:如何在不导入外部模块的情况下进行转换?我已阅读CPAN但无法明确指出执行以下 *** 作的方法:

@H_502_11@Convert: 20080428 to 28-APR-08

有任何想法吗?

即使指导我阅读教程也会受到赞赏.

问候,
PIAS

解决方法 此代码在Y10k中失败,但这应该足够好了.正则表达式可能更严格,但如果日期已经过验证(或将以新表格验证),则无关紧要.

@H_502_11@#!/usr/bin/perluse strict;use warnings;my @mon = qw/null JAN FEB MAR APR MAY JUN Jul AUG SEP OCT NOV DEC/;my $d = "20080428";$d =~ s/..(..)(..)(..)/$3-$mon[$2]-$1/;print "date is Now $d\n";

或者,如果你是疯了,想要在正则表达式中验证(需要Perl 5.10):

@H_502_11@#!/usr/bin/env perl5.10.0use strict;use warnings;my @mon = qw/null JAN FEB MAR APR MAY JUN Jul AUG SEP OCT NOV DEC/;my $d = join '',@ARGV;# only valIDates between 1600 and 9999# because of calendar weirdness prior to 1600 $d =~ s/ ^ (?: # non-leap years and everything but 29th of Feb in leap years (?: 1[6-9] (?<y> [0-9]{2}) | [2-9][0-9] (?<y> [0-9]{2}) ) (?: #any month 1st through 28th (?: (?<m> 0[1-9] | 1[0-2]) (?<d> 0[0-9] | 1[0-9] | 2[0-8]) ) | #or 30th of any month but 2 (?: (?<m>0[13-9] | 1[0-2]) (?<d> 30) ) | # or 31st of 1,3,5,7,8,10,or 12 (?: (?<m>0[13578] | 1[02]) (?<d> 31) ) ) | # or 29th of Feb in leap years (?: (?: #centurIEs divisible by 4 minus the ones divisible by 100 16 | [2468][048] | [3579][26] ) (?<y> 00) | #or non-centurIEs divisible by 4 (?: 1[6-9] | [2-9][0-9] ) (?<y> 0[48] | [2468][048] | [13579][26] ) ) (?<m> 02) (?<d> 29) ) $/$+{y}-$mon[$+{m}]-$+{d}/x or dIE "invalID date: $d";print "date is Now $d\n"; 总结

以上是内存溢出为你收集整理的如何在不导入外部模块的情况下在Perl中转换日期格式?全部内容,希望文章能够帮你解决如何在不导入外部模块的情况下在Perl中转换日期格式?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存