![]() |
|< 1 2 >| | ![]() |
17 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#! /usr/bin/perl
use strict;
use warnings;
my %hash = (1 => 31,
2 => 28,
3 => 31,
4 => 30,
5 => 31,
6 => 30,
7 => 31,
8 => 31,
9 => 30,
10 => 31,
11 => 30,
12 => 31,);
for my $datum(qw/12.12.2004 31.02.2006 3.5.1999/){
if($datum =~ /^(([012]?[0-9])|(3[01]))\.((0?[0-9])|(1[0-2]))\.(\d{2}|\d{4})$/){
my ($d,$m,$y) = split /\./, $datum;
$hash{2} = 29 if(is_leap_year($y));
$m =~ s/^0//;
print "yes\n" if($d > 0 && $d < $hash{$m});
}
}
sub is_leap_year{
my ($year) = @_;
return 0 unless($year % 4 == 0);
return 1 if($year % 400 == 0);
return 0 if($year % 100 == 0);
return 1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;
use warnings;
use Time::Local;
my @A = (
[25, 6, 1996 ],
[31, 2, 2005 ],
[29, 2, 2000 ],
);
foreach my $dmy (@A) {
my ($d, $m, $y) = @{$dmy};
print "invalid date: $d.$m.$y\n" unless eval { timelocal (0,0,0,$d,$m-1,$y) };
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;
use warnings;
use Time::Local;
my @A = (
[25, 6, 1996 ],
[31, 2, 2005 ],
[29, 2, 2000 ],
);
foreach my $dmy (@A) {
my ($d, $m, $y) = @{$dmy};
print "invalid date: $d.$m.$y\n" unless eval { timelocal (0,0,0,$d,$m-1,$y-1900) };
}
1
2
3
4
5
6
7
8
9
10
11
12
use Date::Calc qw(check_date);
@tests = (
[25, 6, 1996 ],
[31, 2, 2005 ],
[29, 2, 2000 ],
);
for (@tests) {
my @ymd = reverse @$_;
print "check_date @ymd ergibt " . check_date(@ymd) . "\n";
}
![]() |
|< 1 2 >| | ![]() |
17 Einträge, 2 Seiten |