Learning lesson here: Never trust the PHP documentation. Test everything!
$position does not work as described, at least in PHP 7. After parsing without errors, it does not contain -1.
You can still use it to set the parsing start character position, but not necessarily whether any errors occurred.
To test for errors, replace my $nPosition test code in the other note with:
<?php
// Check if errors
$bError = intl_is_failure(datefmt_get_error_code(oIDF));
// If no error
if(!$bError){
// Use 'tm_hour' and 'tm_min' from the $aTime array for checking against other time values
...
}else{
// Invalid string
...
}
?>