title: Convert a date from a format to another
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/2167916/convert-one-date-format-into-another-in-php">Convert one date format into another in PHP</a>  </p>
  </blockquote>
  
  
  
  <p>I have a user formatted date and the correspondant format using PHP date format (<a href="http://fr.php.net/manual/en/function.date.php" rel="nofollow noreferrer">http://fr.php.net/manual/en/function.date.php</a>). This format is not known before user input.</p>
  
  <p>I have to convert this date to a known format like 'd/m/Y h:i:s'.
  My PHP server uses the 5.2.1 PHP version so I can't use DateTime class.</p>
  
  <p>Someone has an alternative to DateTime::createFromFormat method, a script doing like this or an idea to help me ?</p>
  
  <p>Best regards,
  Florian.</p>
  
  <p><strong>Edit :</strong> </p>
  
  <p>I write a function which works to convert a date to an other format without to know original date format :</p>
  
  <pre><code>/**
   * This function converts a date with unknown format into a defined format.
   * It could detect some standard date formats : dd/mm/YYYY, dd-mm-YY, YYYY-mm-dd hh:mm:ss, etc.
   * @param string $date date which is user formatted.
   * @param int $options used to help algorithm to detect date format : US or FR date, past date or future date, hour format.
   * @param string $newFormat format the date must be converted into
   * @param string $originalFormat format detected
   * @return boolean|string the new date, corresponding to the $date argument, formatted into the $newFormat format
   */
  function convertDateToFormat($date, $options = 0, $newFormat, &amp;$originalFormat = ''){
      if($options == 0){
          $options = DATE_FR | DATE_PAST | HOUR_24;
      }
      $matches = array();
  
      $year = 0;
      $month = 0;
      $day = 0;
      $hour = 0;
      $minute = 0;
      $second = 0;
  
      $originalFormatOk = false;
  
      if(preg_match('#(\d{1,2})([/.-])(\d{1,2})(([/.-])(\d{2,4}))?#', $date, $matches)){
          if(isset($matches[6])){
              if(strlen($matches[6]) == 2){
                  if($matches[6] &gt;= date('y') &amp;&amp; DATE_PAST)
                      $year = '19'.$matches[6];
                  else
                      $year = '20'.$matches[6];
                  $originalFormatyear = 'y';
                  if($options &amp; DATE_US){
                      $originalFormat = 'm'.$matches[2].'d'.$matches[5].$originalFormatyear;
                      $year = $matches[6];
                      $month = $matches[1];
                      $day = $matches[3];
                      $originalFormatOk = true;
                  }
              }
              else{
                  $year = $matches[6];
                  $originalFormatyear = 'Y';
              }
              if(!$originalFormatOk){
                  $year = $matches[6];
                  $month = $matches[3];
                  $day = $matches[1];
                  $originalFormat = 'd'.$matches[2].'m'.$matches[5].$originalFormatyear;
                  $originalFormatOk = true;
              }
          }
          else{
              if($options &amp; DATE_US){
                  $originalFormat = 'm'.$matches[2].'d';
                  $year = date('Y');
                  $month = $matches[1];
                  $day = $matches[3];
              }
              else{
                  $originalFormat = 'd'.$matches[2].'m';
                  $year = date('Y');
                  $month = $matches[3];
                  $day = $matches[1];
              }
              $originalFormatOk = true;
          }
  
      }
  
      if(preg_match('#'.$matches[0].'(\D*)(\d{1,2})([:hH])(\d{1,2})(:(\d{1,2}))?#', $dateHour, $matches)){
          if($options &amp; HOUR_12)
              $originalFormatHour = 'h';
          else
              $originalFormatHour = 'H';
          $hour = $matches[2];
          $minute = $matches[4];
          if(strtolower($matches[3]) == 'h')
              $matches[3] = '\\'.$matches[3];
          $originalFormat .= $matches[1].$originalFormatHour.$matches[3].'i';
          if(isset($matches[6])){
              $second = $matches[6];
              $originalFormat .= ':s';
          }
      }
  
      if($originalFormatOk)
          return date($newFormat, mktime($hour, $minute, $second, $month, $day, $year));
      return false;
  }
  </code></pre>