Friday, 23 January 2015

Time(in english) Converted to Seconds - PHP

Just type in the time you want converted to seconds in english (e.g. "1 hour and 30 minutes") and it will be converted to an integer of seconds (e.g. 5400).
<?php
function time2seconds($time) {

preg_match_all('/(d [a-z] )/', $time, $matches);

$matches = $matches[0];

$formats = array();

foreach ($matches as $format) {
preg_match('/(d )s?([a-z] )/', $format, $f);
$time = $f[1];
$type = $f[2];
$formats[$type] = $time;
}

$output = array(
'years' => 0,
'months' => 0,
'days' => 0,
'hours' => 0,
'minutes' => 0,
'seconds' => 0
);

foreach ($formats as $format => $time) {
if( $time == 0 )
continue;

switch ($format) {
case 'year' :
case 'years' :
$output['years'] = $time * 12 * 30 * 24 * 60 * 60;
break;

case 'month' :
case 'months' :
$output['months'] = $time * 30 * 24 * 60 * 60;
break;

case 'day' :
case 'days' :
$output['days'] = $time * 24 * 60 * 60;
break;

case 'hour' :
case 'hours' :
$output['hours'] = $time * 60 * 60;
break;

case 'minute' :
case 'minutes' :
$output['minutes'] = $time * 60;
break;

case 'second' :
case 'seconds' :
$output['seconds'] = $time;
break;
}

}

return $output['years'] $output['months'] $output['days'] $output['hours'] $output['minutes'] $output['seconds'].' Sec';
}


?>
<form method="post" >
<label for="time">Time</label><br />
<input type="text" name="time" id="time" size="50" value="<?php echo (isset($_POST['time'])) ? $_POST['time'] : '1 hour 30 minutes' ?>" />
<button name="submit">Test!</button>
</form>
<?php
if (isset($_POST)) {
echo time2seconds($_POST['time']);
}
?>

0 comments:

Post a Comment