Mega Code Archive

 
Categories / Php / Date Time
 

A date-time management script

<?php // // class.datetime_functions.php // // Includes a number of functions that are date/time related. // // class datetime_functions { // constructor function datetime_functions() { $this->_class_name = "Date/Time Functions Class"; $this->_class_version = "1.0.0"; $this->_class_author = "xxx"; } // returns a nicely formatted date string for a SQL date format function sqldate_to_string($t="",$short=0) { if ($t=="") return ""; if (!$short) $months = array( "January","Februrary","March","April","May","June","July", "August","September","October","November","December" ); else $months = array( "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" ); if (ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})",$t,$args)) return sprintf("%s %d, %s",$months[$args[2]-1],$args[3],$args[1]); else if (ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$t,$args)) return sprintf("%s %d, %s",$months[$args[2]-1],$args[3],$args[1]); else return $t; } // a function to convert number of seconds (eg; 96172) to a readable format // such as: 1 day, 2 hours, 42 mins, and 52 secs // takes unix timestamp as input function time_to_string($t=0) { if (!$t) return "no time at all"; if ($t < 0) { $neg = 1; $t = 0 - $t; } $days = $t / 86400; $days = floor($days); $hrs = ($t / 3600) % 24; $mins = ($t / 60) % 60; $secs = $t % 60; $timestring = ""; if ($neg) $timestring .= "negative "; if ($days) { $timestring .= "$days day" . ($days==1?"":"s"); if ($hrs || $mins || $secs) $timestring .= ", "; } if ($hrs) { $timestring .= "$hrs hour" . ($hrs==1?"":"s"); if ($mins && $secs) $timestring .= ", "; if (($mins && !$secs) || (!$mins && $secs)) $timestring .= " and "; } if ($mins) { $timestring .= "$mins min" . ($mins==1?"":"s"); if ($mins && $secs) $timestring .= ", "; if ($secs) $timestring .= " and "; } if ($secs) $timestring .= "$secs sec" . ($secs==1?"":"s"); return $timestring; } // a function to return a string of when the file was last updated in a slightly // fuzzy way. Takes a unix timestamp as input. function FuzzyTime($time) { // sod = start of day :) $now = time(); $sod = mktime(0,0,0,date("m",$time),date("d",$time),date("Y",$time)); $sod_now = mktime(0,0,0,date("m",$now),date("d",$now),date("Y",$now)); if ($sod_now == $sod) return "today at " . date("g:ia",$time); // check 'today' if (($sod_now-$sod) <= 86400) return "yesterday at " . date("g:ia",$time); // check 'yesterday' if (($sod_now-$sod) <= (ONE_DAY*5)) return date("l \a\\t g:ia",$time); // give a day name if within the last 5 days if (date("Y",$now) == date("Y",$time)) return date("M j \a\\t g:ia",$time); // miss off the year if it's this year return date("M j, Y \a\\t g:ia",$time); // return the date as normal } } // end class ?> And just in case you want an example script for the above, example1.php <? /* Original example script for class.datetime_functions.php Lets begin Brief description and purpose of this file To give you a clear cut view on how the class can become useful. There aew three functions in the class: 1. sqldate_to_string(); 2. time_to_string(); 3. Fuzzy Time(); The descriptions for the these functions() can be found in the class I'm just gonna give you an idea on how to use it. O.K lets begin */ include('class.datetime_functions.php'); $functions = new datetime_functions; $formated_t = $functions -> sqldate_to_string("2004-06-12 17:38:14"); echo('This is to convert the date from sql to a formatted string.<br>2004-06-12 17:38:14 <b> - becomes - </b> ' . $functions -> sqldate_to_string("2004-06-12 17:38:14")); echo('<br><br>'); echo('This is to convert seconds to a formatted date string.<br>96172 <b> - becomes - </b> ' . $functions -> time_to_string(96172)); echo('<br><br>'); echo('This is to convert a Timestanp to a formatted date string.<br>20040612173814 <b> - becomes - </b> ' . $functions -> FuzzyTime(20040612173814)); echo('<br>'); ?>