$result_hours, $result_mins, $result_secs);
$result_secs = $sec2 - $sec1;
$result_mins = $min2 - $min1;
- if($result_secs < 0) {
+ while($result_secs < 0) {
$result_secs += 60; $result_mins--;
}
$result_hours = $hour2 - $hour1;
- if($result_mins < 0) {
+ while($result_mins < 0) {
$result_mins += 60; $result_hours--;
}
$result_days = $mday2 - $mday1;
- if($result_hours < 0) {
+ while($result_hours < 0) {
$result_hours += 24; $result_days--;
}
- $result_months = $month2 - $month1;
- if($result_days < 0) {
+ while($result_days < 0) {
$result_days += get_monthdays(
($month2 == 0 ? 11 : $month2 - 1),
($month2 == 0 ? $year2 - 1: $year2));
- $result_months--;
+ #$result_months--;
+ if(--$month2 < 0) {
+ $year2--;
+ $month2 += 12;
+ };
}
+ $result_months = $month2 - $month1;
# The following division relies on integer division, as 'use integer' is decl'd above.
$result_weeks = $result_days / 7;
$result_days = $result_days % 7;
$result_years = $year2 - $year1;
if($result_months < 0) {
- $result_months += 12; $result_years--
+ $result_months += 12; $result_years--;
}
return ($result_years, $result_months, $result_weeks, $result_days, $result_hours, $result_mins, $result_secs);
}
sub time_rel_long_all($;$) {
my ($lesser_time, $greater_time) = @_;
$greater_time = time() unless $greater_time;
- my ($years, $months, $weeks, $days, $hours, $minutes, $seconds) = __time_rel_long($lesser_time);
+ my ($years, $months, $weeks, $days, $hours, $minutes, $seconds) = __time_rel_long($lesser_time, $greater_time);
return ( $years ? "$years year".($years !=1 ? 's' : '') : '' ).
( $months ? ($years ? ', ' : '')."$months month".( $months!=1 ? 's' : '' ) : '').
( $weeks ? (($years or $months) ? ', ' : '')."$weeks week".( $weeks!=1 ? 's' : '' ) : '').