problema de conversión de formato de fecha php

Aquí mi función que intento transformar las fechas en diferentes formatos.

/*  example:
*   dateString          =   '03/25/2010';
*   inputDateFormat     =   '%m/%d/%Y';
*   ouputDateFormat     =   'Y-m-d';
*   return              ->  '2010-03-25';
*/  
function formatDate($dateString,$inputFormat=NULL,$outputFormat=NULL){
    if($dateString==''||$dateString==NULL) return '';
    $t =  strptime($dateString,$inputFormat);
    return gmdate($outputFormat,mktime($t[tm_sec],$t[tm_min],$t[tm_hour],($t[tm_mon]+1),($t[tm_mday]+1),($t[tm_year]+1900)));
}

Mi problema es

cuando intento convertir esta fecha Wed, 19 Jan 2011 21:16:37 +0000 dentro 2011-01-19 21:16:37 con la siguiente línea:

echo formatDate('Wed, 19 Jan 2011 21:16:37 +0000','%a, %d %b %Y %H:%M:%S','Y-m-d H:i:s');

el resultado es este:

2011-01-21 11:16:21

por qué tengo la cita con 2 días extra. ¿Tiene usted alguna idea?

preguntado el 27 de agosto de 11 a las 23:08

2 Respuestas

usa esto en su lugar:

  function formatDate($dateString, $outputFormat=NULL){
      return date($outputFormat, strtotime($dateString));
  }

  echo formatDate('Wed, 19 Jan 2011 21:16:37 +0000','Y-m-d H:i:s');

Respondido 28 ago 11, 03:08

Funciona gracias :) pero también necesito especificar el formato de entrada, ¿qué sugieres para esto? - Yunus Eren Güzel

no hay problema, como recordatorio, debe agregar la validación en caso de que tenga una fecha no válida. antes de php 5.1 strtotime return -1, después devuelve FALSE. - Libro de Zeus

cuando doy tal fecha 03/02/2011 no puedo entender cuál es el día y cuál es el mes :) - Yunus Eren Güzel

incluso puede poner estos: 'ahora', 'mañana' o 'ahora + 2 días' cuando llame a formatDate - Libro de Zeus

Esta es una suposición descabellada, pero tal vez necesite establecer su zona horaria.

date_default_timezone_set () (requiere PHP 5)

Respondido 28 ago 11, 03:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.