X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FJulian.pm;h=85f47bdd37e3abea4f988186675b2106db73cf93;hb=6d1745603b0d1bb463194999129713c978f4244f;hp=a86c11e2dc8e128510f0b50fda7698516b17bb01;hpb=2b58ccdf81685a1167a43c38705a0d84b9d8d661;p=spider.git diff --git a/perl/Julian.pm b/perl/Julian.pm index a86c11e2..85f47bdd 100644 --- a/perl/Julian.pm +++ b/perl/Julian.pm @@ -11,12 +11,12 @@ use strict; package Julian; -use vars qw($VERSION $BRANCH); -$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); -$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0; -$main::build += $VERSION; -$main::branch += $BRANCH; +use vars qw($VERSION $BRANCH @days @ldays @month); +main::mkver($VERSION = q$Revision$) if main->can('mkver'); +@days = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); +@ldays = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); +@month = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); sub alloc($$$) { @@ -52,8 +52,6 @@ package Julian::Day; use vars qw(@ISA); @ISA = qw(Julian); -my @days = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); - # is it a leap year? sub _isleap { @@ -78,9 +76,9 @@ sub sub($$) my $diny = _isleap($self->[0]) ? 366 : 365; $self->[1] -= $amount; while ($self->[1] <= 0) { - $self->[1] += $diny; $self->[0] -= 1; $diny = _isleap($self->[0]) ? 366 : 365; + $self->[1] += $diny; } return $self; } @@ -99,6 +97,22 @@ sub add($$) return $self; } +sub as_string +{ + my $self = shift; + my $days = $self->[1]; + my $mon = 0; + for (_isleap($self->[0]) ? @Julian::ldays : @Julian::days) { + if ($_ < $days) { + $days -= $_; + $mon++; + } else { + last; + } + } + return "$days-$Julian::month[$mon]-$self->[0]"; +} + package Julian::Month; use vars qw(@ISA); @@ -140,5 +154,11 @@ sub add($$) return $self; } +sub as_string +{ + my $self = shift; + return "$Julian::month[$self->[1]]-$self->[0]"; +} + 1;