package Julian;
+
+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($$$)
{
my ($pkg, $year, $thing) = @_;
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
{
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;
}
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);
return $self;
}
+sub as_string
+{
+ my $self = shift;
+ return "$Julian::month[$self->[1]]-$self->[0]";
+}
+
1;