note 67996 deleted from function.mktime by derick

From: Date: Sat, 26 Jul 2008 10:02:47 +0000
Subject: note 67996 deleted from function.mktime by derick
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-142768@lists.php.net to get a copy of this message
Note Submitter: nicky ---- 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)); ?>

« previous php.notes (#142768) next »