This is a simple PHP function dateTimeDiff() written for an application that I am developing, useful to get time and date difference between two date (a reference date and "now"), with a Digg-like style (ex: 12 min 20 sec ago). The mask of reference for each date is 2007-10-18 20:05:22, a standard MySQL datetime field.
How it works?
First, you have to include the file time Function.php into the PHP file that will use the function.
<?php include('timeFunction.php') ?> |
... and you have to pass the data which it goes made the comparison:
dateTimeDiff($dataRef); |
... where $dataRef is, for example, a value from a SQL query.
The code
This is the code of dateTimeDiff() PHP function:
<?php function dateTimeDiff($data_ref){ // Get the current date $current_date = date('Y-m-d H:i:s'); // Extract from $current_date $current_year = substr($current_date,0,4); $current_month = substr($current_date,5,2); $current_day = substr($current_date,8,2); // Extract from $data_ref $ref_year = substr($data_ref,0,4); $ref_month = substr($data_ref,5,2); $ref_day = substr($data_ref,8,2); // create a string yyyymmdd 20071021 $tempMaxDate = $current_year . $current_month . $current_day; $tempDataRef = $ref_year . $ref_month . $ref_day; $tempDifference = $tempMaxDate-$tempDataRef; // If the difference is GT 10 days show the date if($tempDifference >= 10){ echo $data_ref; } else { // Extract $current_date H:m:ss $current_hour = substr($current_date,11,2); $current_min = substr($current_date,14,2); $current_seconds = substr($current_date,17,2); // Extract $data_ref Date H:m:ss $ref_hour = substr($data_ref,11,2); $ref_min = substr($data_ref,14,2); $ref_seconds = substr($data_ref,17,2); $hDf = $current_hour-$ref_hour; $mDf = $current_min-$ref_min; $sDf = $current_seconds-$ref_seconds; // Show time difference ex: 2 min 54 sec ago. if($dDf<1){ if($hDf>0){ if($mDf<0){ $mDf = 60 + $mDf; $hDf = $hDf - 1; echo $mDf . ' min ago'; } else { echo $hDf. ' hr ' . $mDf . ' min ago'; } } else { if($mDf>0){ echo $mDf . ' min ' . $sDf . ' sec ago'; } else { echo $sDf . ' sec ago'; } } } else { echo $dDf . ' days ago'; } ?> |
0 comments:
Post a Comment