文字列の日時をdatetime型に変更する自作関数

function strtodatetime($date) {
  if (strlen($date) == 14) {
    list($year, $month, $day) = array(substr($date, 0, 4), substr($date, 4, 2), substr($date, 6, 2));
    list($hour, $min, $sec) = array(substr($date, 8, 2), substr($date, 10, 2), substr($date, 12, 2));

    if (checkdate($month, $day, $year) && ($hour >= 0 && $hour < 24) && ($min >= 0 && $min < 60) && ($sec >= 0 && $sec < 60)) {
      $formatDate = sprintf("%d-%d-%d", $year, $month, $day);
      $formatTime = sprintf("%d:%d:%d", $hour, $min, $sec);

      return date("Y-m-d H:i:s", strtotime($formatDate . ' ' . $formatTime));
    }
  }
  return null;
}
echo strtodatetime('20100101235959');
// 2010-01-01 23:59:59