regex für SQL server datetime format

Ich habe eine knifflige Ecke Fall, dass ich Hilfe beim Schreiben einer Regex zu validieren Microsoft SQL server unterstützt datetime / Offset-Formate .

Dies ist insbesondere ein gültiger datetimeoffset

 2015-11-12 14:29:08 -07:00 

Allerdings ist hier ein gemeinsames, aber nicht unterstütztes Format (kein Doppelpunkt im timezonenversatz):

 2015-11-12 14:29:08 -0700 

Ich kann nicht ganz herausfinden, wie man dieses Muster Match ungültig macht, ohne die anderen akzeptierten Formate zu brechen. Hier sind einige Probeneinheitstests:

 <?php $tests = [ '12 months' => false, '12:12:12' => 'datetime', '12/12/2012' => 'datetime', '12/12/2012 12:12:12' => 'datetime', '2012-12-12' => 'datetime', '2012-12-12 12:12:12' => 'datetime', '2012-12-12T12:12:12+05:00' => 'datetimeoffset', '2015-11-12 14:29:08 -0700' => false, '2015-11-12 14:29:08 -07:00' =>'datetimeoffset', ]; foreach($tests as $format => $datatype){ if (preg_match('/^[\s\dT+:\/-]*$/', $format) !== 1){ $match = false; } else { $match = true; } if($datatype == $match){ echo "pass - $format\n"; } else { echo "FAIL - $format\n"; } }