by default but can optionally return the raw time difference in text (e.g. "16 hours and 28 minutes", "1 day, 18 hours"). */ if(!is_number($TimeStamp)) { // Assume that $TimeStamp is SQL timestamp if($TimeStamp == '0000-00-00 00:00:00') { return 'Never'; } $TimeStamp = strtotime($TimeStamp); } if($TimeStamp == 0) { return 'Never'; } $Time = time()-$TimeStamp; // If the time is negative, then it expires in the future. if($Time < 0) { $Time = -$Time; $HideAgo = true; } $Years=floor($Time/31556926); // seconds in one year $Remain = $Time - $Years*31556926; $Months = floor($Remain/2629744); // seconds in one month $Remain = $Remain - $Months*2629744; $Weeks = floor($Remain/604800); // seconds in one week $Remain = $Remain - $Weeks*604800; $Days = floor($Remain/86400); // seconds in one day $Remain = $Remain - $Days*86400; $Hours=floor($Remain/3600); // seconds in one hour $Remain = $Remain - $Hours*3600; $Minutes=floor($Remain/60); // seconds in one minute $Remain = $Remain - $Minutes*60; $Seconds=$Remain; $Return = ''; if ($Years>0 && $Levels>0) { if ($Years>1) { $Return .= $Years.' years'; } else { $Return .= $Years.' year'; } $Levels--; } if ($Months>0 && $Levels>0) { if ($Return!='') { $Return.=', '; } if ($Months>1) { $Return.=$Months.' months'; } else { $Return.=$Months.' month'; } $Levels--; } if ($Weeks>0 && $Levels>0) { if ($Return!="") { $Return.=', '; } if ($Weeks>1) { $Return.=$Weeks.' weeks'; } else { $Return.=$Weeks.' week'; } $Levels--; } if ($Days>0 && $Levels>0) { if ($Return!='') { $Return.=', '; } if ($Days>1) { $Return.=$Days.' days'; } else { $Return.=$Days.' day'; } $Levels--; } if ($Hours>0 && $Levels>0) { if ($Return!='') { $Return.=', '; } if ($Hours>1) { $Return.=$Hours.' hours'; } else { $Return.=$Hours.' hour'; } $Levels--; } if ($Minutes>0 && $Levels>0) { if ($Return!='') { $Return.=' and '; } if ($Minutes>1) { $Return.=$Minutes.' mins'; } else { $Return.=$Minutes.' min'; } $Levels--; } if($Return == '') { $Return = 'Just now'; } elseif (!isset($HideAgo)) { $Return .= ' ago'; } if ($Lowercase) { $Return = strtolower($Return); } if ($Span) { return ''.$Return.''; } else { return $Return; } } /* SQL utility functions */ function time_plus($Offset) { return date('Y-m-d H:i:s', time()+$Offset); } function time_minus($Offset, $Fuzzy = false) { if($Fuzzy) { return date('Y-m-d 00:00:00', time()-$Offset); } else { return date('Y-m-d H:i:s', time()-$Offset); } } function sqltime($timestamp = false) { if ($timestamp === false) { $timestamp = time(); } return date('Y-m-d H:i:s', $timestamp); } function validDate($DateString) { $DateTime = explode(" ", $DateString); if(count($DateTime) != 2) return false; list($Date, $Time) = $DateTime; $SplitTime = explode(":", $Time); if(count($SplitTime) != 3) return false; list($H, $M, $S) = $SplitTime; if($H != 0 && !(is_number($H) && $H < 24 && $H >= 0)) return false; if($M != 0 && !(is_number($M) && $M < 60 && $M >= 0)) return false; if($S != 0 && !(is_number($S) && $S < 60 && $S >= 0)) return false; $SplitDate = explode("-", $Date); if(count($SplitDate) != 3) return false; list($Y, $M, $D) = $SplitDate; return checkDate($M, $D, $Y); } ?>