Geben Sie einfach die Zeit ein, die Sie von englischer Sprache in Sekunden umwandeln möchten (z. B. "1 Stunde und 30 Minuten"), und sie wird in eine ganze Zahl von Sekunden umgewandelt (z. B. 5400). Danke an Baylor Rae.
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'];
}
Einfache Verwendung
Formular sendet "time"
<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>
Wenn "time" gesetzt ist, verwende die Funktion und gib zurück, was zurückgegeben wird
if (isset($_POST)) {
echo time2seconds($_POST['time']);
}