obtener new fecha espaƱol date_format actual php string datetime date

new - string to date php



Convertir cadena a Date y DateTime (7)

Si tengo una cadena PHP en el formato de mm-dd-YYYY (por ejemplo, 10-16-2003), ¿cómo lo convierto correctamente a una Date y luego a una Date y hora en el formato de YYYY-mm-dd ? La única razón por la que pido Date y Date es porque necesito una en un lugar y la otra en un lugar diferente.


Debe tener cuidado con los formatos m / d / Y y mdY. PHP considera que significa m / d / Y y que significa dmY. Describiría explícitamente el formato de entrada en este caso:

$ymd = DateTime::createFromFormat(''m-d-Y'', ''10-16-2003'')->format(''Y-m-d'');

De esa manera usted no está en los caprichos de una determinada interpretación.


Para analizar la fecha, debe usar: DateTime :: createFromFormat ();

Ex:

$dateDE = "16/10/2013"; $dateUS = /DateTime::createFromFormat("d.m.Y", $dateDE)->format("m/d/Y");

Sin embargo, cuidado, porque esto chocará con:

PHP Fatal error: Call to a member function format() on a non-object

Realmente necesitas verificar que el formato haya ido bien, primero:

$dateDE = "16/10/2013"; $dateObj = /DateTime::createFromFormat("d.m.Y", $dateDE); if (!$dateObj) { throw new /UnexpectedValueException("Could not parse the date: $date"); } $dateUS = $dateObj->format("m/d/Y");

Ahora, en lugar de estrellarse, obtendrás una excepción, que puedes capturar, propagar, etc.

$ dateDE tiene el formato incorrecto, debe ser "16.10.2013";


Si está utilizando PHP 5.2 o alto, use DateTime como se mencionó anteriormente. This artículo ayudará.


Si tiene el formato dd-mm-aaaa, en PHP no funcionará como se esperaba. En el documento PHP tienen la siguiente guía.

Las fechas en los formatos m / d / a o dmy se desambiguan al mirar el separador entre los diversos componentes: si el separador es una barra (/), se asume el m / d / y estadounidense; mientras que si el separador es un guión (-) o un punto (.), se asume el formato dmy europeo.

Por lo tanto, simplemente no puede utilizar como desee. Cuando intente usar el formato dd / mm / aaaa con esto, eliminará FALSO. Puedes ajustar con lo siguiente.

$date = "23/02/2013"; $timestamp = strtotime($date); if ($timestamp === FALSE) { $timestamp = strtotime(str_replace(''/'', ''-'', $date)); } echo $timestamp; // prints 1361577600


Use strtotime() en su primera fecha y luego en la date(''Ym-d'') para volver a convertirlo:

$time = strtotime(''10/16/2003''); $newformat = date(''Y-m-d'',$time); echo $newformat; // 2003-10-16

Tenga en cuenta que existe una diferencia entre el uso de barra inclinada / y guión - en la función strtotime() . Para citar de php.net:

Las fechas en los formatos m / d / a o dmy se desambiguan al mirar el separador entre los diversos componentes: si el separador es una barra (/), se asume el m / d / y estadounidense; mientras que si el separador es un guión (-) o un punto (.), se asume el formato dmy europeo.


Para la primera cita

$_firstDate = date("m-d-Y", strtotime($_yourDateString));

Para nueva fecha

$_newDate = date("Y-m-d",strtotime($_yourDateString));


$d = new DateTime(''10-16-2003''); $timestamp = $d->getTimestamp(); // Unix timestamp $formatted_date = $d->format(''Y-m-d''); // 2003-10-16

Editar: también puede pasar un DateTimeZone al constructor DateTime () para garantizar la creación de la fecha para la zona horaria deseada, no la predeterminada del servidor.