note 67996 added to function.mktime

From: Date: Sun, 09 Jul 2006 11:08:53 +0000
Subject: note 67996 added to function.mktime
Groups: php.notes 
Request: Send a blank email to php-notes+get-114607@lists.php.net to get a copy of this message
here's a function to generate a timestamp from a certain date by using patterns: <?php function str2time($strStr, $strPattern = null) { // an array of the valide date characters, see: http://php.net/date#AEN21898 $arrCharacters = array( 'd', // day 'm', // month 'y', // year, 2 digits 'Y', // year, 4 digits 'H', // hours 'i', // minutes 's' // seconds ); // transform the characters array to a string $strCharacters = implode('', $arrCharacters); // splits up the pattern by the date characters to get an array of the delimiters between the date characters $arrDelimiters = preg_split('~['.$strCharacters.']~', $strPattern); // transform the delimiters array to a string $strDelimiters = quotemeta(implode('', array_unique($arrDelimiters))); // splits up the date by the delimiters to get an array of the declaration $arrStr = preg_split('~['.$strDelimiters.']~', $strStr); // splits up the pattern by the delimiters to get an array of the used characters $arrPattern = preg_split('~['.$strDelimiters.']~', $strPattern); // if the numbers of the two array are not the same, return false, because the cannot belong together if (count($arrStr) !== count($arrPattern)) { return false; } // creates a new array which has the keys from the $arrPattern array and the values from the $arrStr array $arrTime = array(); for ($i = 0;$i < count($arrStr);$i++) { $arrTime[$arrPattern[$i]] = $arrStr[$i]; } // gernerates a 4 digit year declaration of a 2 digit one by using the current year if (isset($arrTime['y']) && !isset($arrTime['Y'])) { $arrTime['Y'] = substr(date('Y'), 0, 2) . $arrTime['y']; } // if a declaration is empty, it will be filled with the current date declaration foreach ($arrCharacters as $strCharacter) { if (empty($arrTime[$strCharacter])) { $arrTime[$strCharacter] = date($strCharacter); } } // checks if the date is a valide date if (!checkdate($arrTime['m'], $arrTime['d'], $arrTime['Y'])) { return false; } // generates the timestamp $intTime = mktime($arrTime['H'], $arrTime['i'], $arrTime['s'], $arrTime['m'], $arrTime['d'], $arrTime['Y']); // returns the timestamp return $intTime; } // example $time = str2time('06-07-08 07:58:02', 'd-m-y H:i:s'); var_dump($time); var_dump(date('d.m.Y H:i:s', $time)); ?> ---- Server IP: 217.13.201.10 Probable Submitter: 217.84.179.207 ---- X-Spam-Status: No, hits=3.1 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER autolearn=no version=2.64 ---- Manual Page -- http://www.php.net/manual/en/function.mktime.php Edit -- http://master.php.net/note/edit/67996 Del: integrated -- http://master.php.net/note/delete/67996/integrated Del: useless -- http://master.php.net/note/delete/67996/useless Del: bad code -- http://master.php.net/note/delete/67996/bad+code Del: spam -- http://master.php.net/note/delete/67996/spam Del: non-english -- http://master.php.net/note/delete/67996/non-english Del: in docs -- http://master.php.net/note/delete/67996/in+docs Del: other reasons-- http://master.php.net/note/delete/67996 Reject -- http://master.php.net/note/reject/67996 Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#114607) next »