Date-Indian

 view release on metacpan or  search on metacpan

demo/example.pl  view on Meta::CPAN

    $h += 1;
  }
  $h = '0'.$h if $h < 10;
  $m = '0'.$m if $m < 10;
  return $sign.$h . ':' . $m;
}

# Sun chara tracking.

my ($nav, $t ) = $d->sunchara();
if ($nav){
  if ( $nav % 9 != 0 ){ # Change of start & navamsa case.
    print "Sun's in ", $nkid->[int($nav/4)], " ", $nav % 4, " at:	",hms($t),"\n";
  }else{# Change of sign case.
    print "Solar ingress to ", int($nav/9)," at:	",hms($t), "\n";
  }
}
print "Length of the day:	", hms($d->daylength()), "\n";

# New moon calculations:

my $td = Indian -> new ( jdate => $d->newmoon(), tz => '5:30');
my ($yr,$mn,$dt,$tm) = $td->ymd();
print "Prev new Moon:	$yr-$mn-$dt ", hms($tm), "\n";

$td = Indian -> new ( jdate => $d->newmoon(1), tz => '5:30');
($yr,$mn,$dt,$tm) = $td->ymd();
print "Next new Moon:	$yr-$mn-$dt ", hms($tm), "\n";

# Rahu, Gulika and Yamaganda kalam.
my ($from, $to) = $d->rahu_kalam();
print "Rahu kalam	", hms($from), " to ", hms($to), "\n";
($from, $to) = $d->gulika_kalam();
print "Gulika kalam	", hms($from), " to ", hms($to), "\n";
($from, $to) = $d->yamaganda_kalam();
print "Yamaganda kalam	", hms($from), " to ", hms($to), "\n";

# Durmuhurtas.
my ($d1_s, $d1_e, $d2_s, $d2_e) = $d->durmuhurtam();
print "Durmurtam	", hms($d1_s), " to ", hms($d1_e), "\n";
print "Durmurtam	", hms($d2_s), " to ", hms($d2_e), "\n"
 if $d2_s;


#Varjyam.
my @out = $d->varjyam();
foreach my $vs ( @out){
	print "varjyam from ", hms($vs)," till ", hms($vs+1.6),"\n";
}

# Karanam:
my %th = $d->karana_endings();
for my $t (sort keys %th){
  my $k;
  $k = 10 if $t == 0;
  $k = $t - 50 if $t >= 57;
  $k = ($t-1) % 7 if ($t >0) & ($t <57);
  print "Karana ", $karanaid->[$k], " ends at ", hms($th{$t}), "\n";
}

# Compute traditional saka date for the gregorian calendar date.
# Takes care of inter calary months.
sub greg2saka{
   my $self = shift;
   my $sun  = $self->sun();
   my ($sr, $ss, $flag) = $self -> sunriseset();
   my $day = int($self->tithi($sr/24.0)) % 30;
   my $td = Indian -> new ( jdate => $self->newmoon(), tz => '5:30');
   my ($yr,$mn,$dt,$tm) = $td->ymd();
   $sun = $td ->sun();
   my $sl = $sun->n_long();
   my $m = int($sl/30);
   my $year = $yr - 78;
   $year -= 1 if int($sl/30) < 11;
   my $mon = int($sl/30 + 1) % 12;
   $td = Indian -> new ( jdate => $self->newmoon(1), tz => '5:30');
   ($yr,$mn,$dt,$tm) = $td->ymd();
   $sun = $td ->sun();
   $sl = $sun->n_long();
   $mon = $mon + 0.1 if $mon == int($sl/30 + 1) % 12;
   print "year = $year,  month = $mon,  day = $day\n";
}
greg2saka( $d );



( run in 1.735 second using v1.01-cache-2.11-cpan-f52f0507bed )