Acme-Tools
view release on metacpan or search on metacpan
t/27_timestuff.t view on Meta::CPAN
tst('Sat 6/8-2019', $t3,'Dy M/D-YYYY');
tst('sat 8/6-2019', $t3,'dy D/M-YYYY');
tst('04:21 pm', $t,'HH12:MI pm');
tst('04:21 pm', $t,'HH12:MI am');
tst('04:21 PM', $t,'HH12:MI PM');
tst('04:21 PM', $t,'HH12:MI AM');
tst('03:46 am', $t2,'HH12:MI pm');
tst('03:46 am', $t2,'HH12:MI am');
tst('03:46 AM', $t2,'HH12:MI PM');
tst('03:46 AM', $t2,'HH12:MI AM');
tst('1971',6e7,'CCYY');tst('20',16e8,'CC');
#tst('21',6e9,'CC'); #ok in newer perls
tst('7',$t,'dow');tst('6',$t3,'dow');
tst('0',$t,'d0w');tst('6',$t3,'d0w');tst('0',$t,'dow0');tst('6',$t3,'dow0');
tst('59', $t+0.1, 'SS');
tst('59', $t+0.1, 'SS.0');
tst('59.00', $t, 'SS.2');
tst('59.100', $t+0.1, 'SS.3');
tst('59.00090',$t+0.0009, 'SS.5');
tst('59.000', $t, 'SS.3');
tst('354',$t,'doy');tst('353',$t,'doy0');tst('353',$t,'d0y');
#--------------------------------------------------------------------------------
my $tt='20151229-19:13';
# more
#-- easter
ok( '384f0eefc22c35d412ff01b2088e9e05' eq md5_hex( join",", map{easter($_)} 1..5000), 'easter');
sub EasterSunday { #https://no.wikipedia.org/wiki/P%C3%A5skeformelen
my $year=shift;
my $a = $year % 19;
my $b = int($year/100);
my $c = $year % 100;
my $d = int($b/4);
my $e = $b % 4;
my $f = int(($b+8)/25);
my $g = int(($b-$f+1)/3);
my $h = (19*$a+$b-$d-$g+15) % 30;
my $i = int($c/4);
my $k = $c % 4;
my $l = (32 + 2*$e + 2*$i - $h - $k) % 7;
my $m = int(($a+11*$h+22*$l)/451);
my $n = int(($h+$l-7*$m+114)/31);
my $p = ($h+$l-7*$m+114) % 31;
(++$p,$n);
}
my @diff;
for(1498..1e4){ #1498..1e7 ok also!
my $e1=join",",easter($_);
my $e2=join",",EasterSunday($_);
push @diff, "easter year $_ e1=$e1 e2=$e2" if $e1 ne $e2;
}
ok(@diff==0,'easter formula1 and 2 eq from year 1498 to 10000');
#--time_fp
ok( time_fp() =~ /^\d+\.\d+$/ , 'time_fp' );
#--sleep_fp
sleep_fp(0.01); #init, require Time::HiRes
my $tfp=time_fp();
sleep_fp(0.1);
my $diff=abs(time_fp()-$tfp-0.1);
#-fails on many systems...virtual boxes?
#$^O eq 'linux'
#? ok($diff < 0.03, "sleep_fp, diff=$diff < 0.03") #off 30% ok
#: ok (1);
sleeps(0.010);
sleepms(10);
sleepus(10000);
sleepns(10000000);
if(eval{require Date::Parse}){
is(s2t("18/februar/2019:13:53","MM"),'02','s2t MM');
is(join(" ; ",s2t("18/februar/2019:13:53","DD","MM","YYYY","YYYYMMDD-HH24:MI:SS")), '18 ; 02 ; 2019 ; 20190218-13:53:00','s2t...');
is( s2t($$_[1]), $$_[0], "ok s2t('$$_[1]')" ) for map[split/\s/,$_,2],grep$_,map trim,split"\n","
1555588437 20190418-13:53:57
1555588437 2019-04-18T13:53:57
1555588437 18. april 2019 13:53:57
1555588437 18/Apr/2019:13:53:57
1555588437 1555588437
1555588437 1555588437001
1555588380 20190418-13:53
1555588380 2019-04-18T13:53
1555588380 18. april 2019 13:53
1555588380 18/Apr/2019:13:53
1558180380 18/Mai/2019:13:53
1558180380 18/May/2019:13:53
1550494380 18/februar/2019:13:53
1550494380 18/February/2019:13:53
1000000000 9/Sep/2001:03:46:40
1000000000 9/9/2001:03:46:40"
} else { ok(1) for 1..18 }
__END__
http://stackoverflow.com/questions/753346/how-do-i-set-the-timezone-for-perls-localtime
https://en.wikipedia.org/wiki/Tz_database
perl -MPOSIX -le' print for tzname' #GMT GMT
perl -MPOSIX -le'tzset;print for tzname' #CET CEST
( run in 1.986 second using v1.01-cache-2.11-cpan-5837b0d9d2c )