projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix version to 1.54
[spider.git]
/
perl
/
Julian.pm
diff --git
a/perl/Julian.pm
b/perl/Julian.pm
index 2307e08a9d651a6b6a238b90d8af0f8945aabc1e..78dd8d29d0ed29179c49fdff8e39dc88436bcb6a 100644
(file)
--- a/
perl/Julian.pm
+++ b/
perl/Julian.pm
@@
-10,6
+10,12
@@
use strict;
package Julian;
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) = @_;
sub alloc($$$)
{
my ($pkg, $year, $thing) = @_;
@@
-44,8
+50,6
@@
package Julian::Day;
use vars qw(@ISA);
@ISA = qw(Julian);
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
{
# 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) {
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->[0] -= 1;
$diny = _isleap($self->[0]) ? 366 : 365;
+ $self->[1] += $diny;
}
return $self;
}
}
return $self;
}
@@
-91,6
+95,22
@@
sub add($$)
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);
package Julian::Month;
use vars qw(@ISA);
@@
-132,5
+152,11
@@
sub add($$)
return $self;
}
return $self;
}
+sub as_string
+{
+ my $self = shift;
+ return "$Julian::month[$self->[1]]-$self->[0]";
+}
+
1;
1;