Merge branch 'newpc92timings' of /scm/spider into newpc92timings
[spider.git] / perl / Julian.pm
index 2307e08a9d651a6b6a238b90d8af0f8945aabc1e..9f333d1188aa5ed264c10cf3bfa0a94e55b27c0b 100644 (file)
@@ -3,13 +3,19 @@
 #
 # Copyright (c) - 1998 Dirk Koopman G1TLH
 #
-# $Id$
+#
 #
 
 use strict;
 
 package Julian;
 
+
+use vars qw(@days @ldays @month);
+@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) = @_;
@@ -44,8 +50,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
 {
@@ -70,9 +74,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;
 }
@@ -91,6 +95,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);
@@ -132,5 +152,11 @@ sub add($$)
        return $self;
 } 
 
+sub as_string
+{
+       my $self = shift;
+       return "$Julian::month[$self->[1]]-$self->[0]";
+}
+
 
 1;