在Yl中将YYYYMMDD日期拆分为3个部分

时间:2010-07-02 22:27:02

标签: regex perl datetime

如何将YYYYMMDD形式的日期拆分为其成分?

my ($yyyy, $mm, $dd) = $date =~ /(\4d+)(\2d+)(\2d+)/;

5 个答案:

答案 0 :(得分:14)

my ($year, $month, $day) = unpack "A4A2A2", $date;

packunpack是未充分利用的内置版本,可用于强大的力量。

答案 1 :(得分:4)

my ($year, $month, $day) = $date =~ /^(\d{4})(\d{2})(\d{2})\z/a
    or die "bad date: $date";

答案 2 :(得分:4)

#!/usr/bin/perl -w

use strict;

   sub main{
      my $date = "some text with the numbers 2010063011 and more text";
      print "Input Date: $date\n";

      my ($year, $month, $day) = $date =~ /\b(\d{4})(\d{2})(\d{2})\b/;      
      print qq{
               Date:  $date
               Year:  $year
               Month: $month
               Day:   $day\n} if (defined $year && defined $month && defined $day);
   }

   main();

请注意,这将在正则表达式中查找第一个日期,但它不适用于2010063011,因为它不是日期,但它可以与20100630一起使用,这就是您想要的。< / p>

答案 3 :(得分:0)

每当我需要使用日期时,我都会使用DateTime模块。你可以从CPAN中获取它。

答案 4 :(得分:-1)

请注意\ d匹配任何Unicode数字,而不仅仅是拉丁十进制数字。

因此,如果您想进行输入验证,请使用'[0-9]'而不是'\ d'。