--- loncom/automation/batchcreatecourse.pm 2006/01/13 21:36:33 1.9 +++ loncom/automation/batchcreatecourse.pm 2006/05/26 15:37:14 1.12 @@ -1,5 +1,5 @@ # -# $Id: batchcreatecourse.pm,v 1.9 2006/01/13 21:36:33 raeburn Exp $ +# $Id: batchcreatecourse.pm,v 1.12 2006/05/26 15:37:14 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -629,15 +629,53 @@ sub process_date { if ($timestr !~ /:/) { $timestamp = ''; } else { - my @entries = split/:/,$timestr; + my @entries = split(/:/,$timestr); for (my $j=0; $j<@entries; $j++) { if ( length($entries[$j]) > 1 ) { $entries[$j] =~ s/^0//; } + $entries[$j] =~ s/\D//g; + if ($entries[$j] < 0) { + $entries[$j] = 0; + } } if ($entries[1] > 0) { $entries[1] = $entries[1] - 1; } + if ($entries[5] > 60) { + $entries[5] = 60; + } + if ($entries[4] > 59) { + $entries[4] = 59; + } + if ($entries[3] > 23) { + $entries[3] = 23; + } + if ($entries[2] > 31) { + $entries[2] = 31; + } + if ($entries[1] > 11) { + $entries[1] = 11; + } + if ($entries[2] == 31) { + if (($entries[1] == 3) || ($entries[1] == 5) || + ($entries[1] == 8) || ($entries[1] == 10)) { + $entries[2] = 30; + } + } + if ($entries[1] == 1) { + if ($entries[2] > 29) { + $entries[2] = 29; + } + if ($entries[2] == 29) { + if ($entries[0]%4 != 0) { + $entries[2] == 28; + } elsif ( $entries[0]%100 == 0 + && $entries[0]%400 != 0) { + $entries[2] == 28; + } + } + } $timestamp = timelocal($entries[5],$entries[4],$entries[3],$entries[2],$entries[1],$entries[0]); } return $timestamp;