<?php
function scholar_parse_time($time) // {{{
{
'/^\s*(?P<hour>\d+)(?>:(?P<minute>\d+))?(?>:(?P<second>\d+(\.\d*)?))?\s*$/';
if (preg_match('/^\s*(?>(?P<hour>\d+)(?>:(?P<minute>\d+)(?>:(?P<second>\d+)(?P<millis>\.\d*)?)?)?)\s*$/', $time, $match)) {
$h = intval($match['hour']);
$m = isset($match['minute']) ? intval($match['minute']) : null;
$s = isset($match['second']) ? intval($match['second']) : null;
$ms = isset($match['millis']) ? round(floatval($match['millis']) * 1000) : null;
if ($h < 24 && (null === $m || $m < 60) && (null === $s || $s < 60)) {
return array(
'hour' => $h,
'minute' => $m,
'second' => $s,
'millis' => $ms,
'iso' => null === $m
? sprintf('%02d', $h)
: (null === $s
? sprintf('%02d:%02d', $h, $m)
: sprintf('%02d:%02d:%02d', $h, $m, $s)
),
);
}
}
return false;
} // }}}
var_dump(scholar_parse_time('19'));
var_dump(scholar_parse_time('19:01'));
var_dump(scholar_parse_time('19:01:04'));
var_dump(scholar_parse_time('19:01:32.'));
var_dump(scholar_parse_time('19:01:32.3'));
var_dump(scholar_parse_time('19:01.1'));
- Output for 4.3.3 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.37, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.5 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- array(5) {
["hour"]=>
int(19)
["minute"]=>
NULL
["second"]=>
NULL
["millis"]=>
NULL
["iso"]=>
string(2) "19"
}
array(5) {
["hour"]=>
int(19)
["minute"]=>
int(1)
["second"]=>
NULL
["millis"]=>
NULL
["iso"]=>
string(5) "19:01"
}
array(5) {
["hour"]=>
int(19)
["minute"]=>
int(1)
["second"]=>
int(4)
["millis"]=>
NULL
["iso"]=>
string(8) "19:01:04"
}
array(5) {
["hour"]=>
int(19)
["minute"]=>
int(1)
["second"]=>
int(32)
["millis"]=>
float(0)
["iso"]=>
string(8) "19:01:32"
}
array(5) {
["hour"]=>
int(19)
["minute"]=>
int(1)
["second"]=>
int(32)
["millis"]=>
float(300)
["iso"]=>
string(8) "19:01:32"
}
bool(false)
- Output for 4.3.0 - 4.3.2
- Notice: Undefined index: hour in /in/848Om on line 7
array(5) {
["hour"]=>
int(0)
["minute"]=>
NULL
["second"]=>
NULL
["millis"]=>
NULL
["iso"]=>
string(2) "00"
}
Notice: Undefined index: hour in /in/848Om on line 7
array(5) {
["hour"]=>
int(0)
["minute"]=>
NULL
["second"]=>
NULL
["millis"]=>
NULL
["iso"]=>
string(2) "00"
}
Notice: Undefined index: hour in /in/848Om on line 7
array(5) {
["hour"]=>
int(0)
["minute"]=>
NULL
["second"]=>
NULL
["millis"]=>
NULL
["iso"]=>
string(2) "00"
}
Notice: Undefined index: hour in /in/848Om on line 7
array(5) {
["hour"]=>
int(0)
["minute"]=>
NULL
["second"]=>
NULL
["millis"]=>
NULL
["iso"]=>
string(2) "00"
}
Notice: Undefined index: hour in /in/848Om on line 7
array(5) {
["hour"]=>
int(0)
["minute"]=>
NULL
["second"]=>
NULL
["millis"]=>
NULL
["iso"]=>
string(2) "00"
}
bool(false)
preferences:
273.15 ms | 403 KiB | 379 Q