sub yearday1_to_day_month { # Given the year in $_[0] (as a four + digit year), and # yearday value in $_[1], compute the day and month, and return # these values as # $_[2]=day # $_[3]=month # Assumes January 1 is yearday 1. my ( @cumdays, $julday, $month); $julday = $_[1]; @cumdays = (0, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 ); #print STDOUT ("**debug, year=$_[0], yearday=$_[1], leapyear=$leapyear\n"); if ( ($_[0]%400 == 0) || ( ($_[0]%4 == 0) && ($_[0]%100 != 0) ) ) { if ( $julday > 60 ) {$julday-- ; } elsif ( $julday == 60 ) { $_[3] = 2; $_[2] = 29; return; } } if ( ( 0 <= $julday) and ($julday < 366 ) ) { $_[2] = int($julday); for ($month = 1; $month <= 12; $month++ ) { $_[3] = $month; last if $julday < $cumdays[$_[3]]; $_[2] = $julday - $cumdays[($_[3] - 1)] + 1; return; } } else { $_[3] = "nd"; $_[2] = "nd"; return; } }