with strip_tags remove quitar para funcion etiquetas ejemplo php datetime time timestamp

php - remove - strip_tags wordpress



Función NOW() en PHP (14)

Además de

date("Y-m-d H:i:s")

¿Hay una función de PHP que devuelve la fecha y la hora en el mismo formato que la función de MySQL NOW() ?

Sé cómo hacerlo usando date() , pero estoy preguntando si existe una función solo para esto.

Por ejemplo para devolver:

2009-12-01 00:00:00


Con la versión de PHP> = 5.4 DateTime puede hacer esto: -

echo (new /DateTime())->format(''Y-m-d H:i:s'');

Véalo funcionando .


Estaba buscando la misma respuesta, y he encontrado esta solución para PHP 5.3 o posterior:

$dtz = new DateTimeZone("Europe/Madrid"); //Your timezone $now = new DateTime(date("Y-m-d"), $dtz); echo $now->format("Y-m-d H:i:s");


La función MySQL NOW() devuelve la marca de tiempo actual. La única forma que encontré para PHP es usando el siguiente código.

$curr_timestamp = date(''Y-m-d H:i:s'');


Me gusta la solución publicada por el usuario1786647, la he actualizado un poco para cambiar la zona horaria a un argumento de función y agregar soporte opcional para pasar una cadena de tiempo de Unix o de fecha y hora para usar para la marca de fecha devuelta.

También incluye un retroceso para "setTimestamp" para usuarios que ejecutan una versión inferior a PHP 5.3:

function DateStamp($strDateTime = null, $strTimeZone = "Europe/London") { $objTimeZone = new DateTimeZone($strTimeZone); $objDateTime = new DateTime(); $objDateTime->setTimezone($objTimeZone); if (!empty($strDateTime)) { $fltUnixTime = (is_string($strDateTime)) ? strtotime($strDateTime) : $strDateTime; if (method_exists($objDateTime, "setTimestamp")) { $objDateTime->setTimestamp($fltUnixTime); } else { $arrDate = getdate($fltUnixTime); $objDateTime->setDate($arrDate[''year''], $arrDate[''mon''], $arrDate[''mday'']); $objDateTime->setTime($arrDate[''hours''], $arrDate[''minutes''], $arrDate[''seconds'']); } } return $objDateTime->format("Y-m-d H:i:s"); }


O puedes usar las constantes de DateTime :

echo date(DateTime::W3C); // 2005-08-15T15:52:01+00:00

Aquí está la lista de ellos:

ATOM = "Y-m-d/TH:i:sP" ; // -> 2005-08-15T15:52:01+00:00 COOKIE = "l, d-M-Y H:i:s T" ; // -> Monday, 15-Aug-2005 15:52:01 UTC ISO8601 = "Y-m-d/TH:i:sO" ; // -> 2005-08-15T15:52:01+0000 RFC822 = "D, d M y H:i:s O" ; // -> Mon, 15 Aug 05 15:52:01 +0000 RFC850 = "l, d-M-y H:i:s T" ; // -> Monday, 15-Aug-05 15:52:01 UTC RFC1036 = "D, d M y H:i:s O" ; // -> Mon, 15 Aug 05 15:52:01 +0000 RFC1123 = "D, d M Y H:i:s O" ; // -> Mon, 15 Aug 2005 15:52:01 +0000 RFC2822 = "D, d M Y H:i:s O" ; // -> Mon, 15 Aug 2005 15:52:01 +0000 RFC3339 = "Y-m-d/TH:i:sP" ; // -> 2005-08-15T15:52:01+00:00 ( == ATOM) RFC3339_EXTENDED = "Y-m-d/TH:i:s.vP" ; // -> 2005-08-15T15:52:01.000+00:00 RSS = "D, d M Y H:i:s O" ; // -> Mon, 15 Aug 2005 15:52:01 +0000 W3C = "Y-m-d/TH:i:sP" ; // -> 2005-08-15T15:52:01+00:00

Para la depuración prefiero una más corta ( 3v4l.org ):

echo date(''ymd/THisP''); // 180614T120708+02:00


Prueba esto:

date("Y-m-d H:i:s");


Puedes usar la clase simplePHP para hacer esto:

echo $date->now();

Esta clase también proporciona muchos métodos útiles para sumar, restar y comparar fechas. Puedes consultar la página de tutoriales para más ejemplos.


Una respuesta más me parece fácil de usar:

echo date(''c''); // 2015-07-27T00:00:00+02:00

Esta es la fecha ISO 8601 (agregada en PHP 5) que MySQL usa

Editar

MySQL 5.7 no permite la zona horaria en la fecha y hora de forma predeterminada. Puede deshabilitar el error con SQL_MODE=ALLOW_INVALID_DATES , SQL_MODE=ALLOW_INVALID_DATES la respuesta aquí para más detalles: https://.com/a/35944059/2103434 Pero eso también significa que la zona horaria se perderá al guardar en la base de datos!

Por defecto, MySQL usa la zona horaria del sistema, y ​​siempre que php use la misma zona horaria , debería estar bien. En mi caso CET / UTC + 2.

Eso significa que si inserto 2015-07-27T00:00:00+02:00 en la base de datos, solo se almacenará 2015-07-27T00:00:00 (¡pero esa es la hora local correcta!).

Cuando vuelvo a cargar el tiempo en PHP,

$importedDate = new /DateTime(''2015-07-27T00:00:00'')

asumirá automáticamente que es +02:00 zona horaria, ya que es el valor predeterminado. Imprimir esto será correcto de nuevo:

echo $importedDate->format(''c''); // 2015-07-27T00:00:00+02:00

Para estar seguro, siempre use UTC en el servidor, especifíquelo en MySQL y PHP, y luego conviértalo a la configuración regional de sus usuarios cuando muestre la fecha:

date_default_timezone_set(''UTC''); $importedDate = new /DateTime(''2015-07-27T00:00:00+02:00''); echo $importedDate->format(''c''); // 2015-07-27T00:00:00+02:00 $importedDate->setTimezone(new /DateTimeZone("America/New_York")); echo $importedDate->format(''c''); // 2015-07-26T18:00:00-04:00


Utilice strftime :

strftime("%F %T");

  • %F es lo mismo que %Y-%m-%d .

  • %T es lo mismo que %H:%M:%S

Aquí hay una demostración de ideone.


Utilice esta función:

function getDatetimeNow() { $tz_object = new DateTimeZone(''Brazil/East''); //date_default_timezone_set(''Brazil/East''); $datetime = new DateTime(); $datetime->setTimezone($tz_object); return $datetime->format(''Y/-m/-d/ h:i:s''); }


puede utilizar la función de fecha php con el formato correcto como parámetro,

echo date("Y-m-d H:i:s");


Mímica en PHP

Para imitar la función MySQL NOW() en PHP puede usar date_create()->format(''Ymd H:i:s'') . Este enfoque le permite manejar las manipulaciones de tiempo / zona horaria más fácilmente que la date(''Ymd H:i:s'') . Es más legible y funciona desde php 5.2.

$now = date_create(''now'')->format(''Y-m-d H:i:s''); // works in php 5.2 and higher $now = date_create()->format(''Y-m-d H:i:s''); // also works in php 5.2 $now = new DateTime(''now'')->format(''Y-m-d H:i:s''); // syntax error!!! $now = (new DateTime(''now''))->format(''Y-m-d H:i:s''); // works in php 5.4 and higher $now = date(''Y-m-d H:i:s''); // works as well, but it''s less nice then date_create()

La razón por la que esto funciona es porque la función MySQL NOW() da el valor de fecha y hora en este formato: ''YYYY-MM-DD HH:MM:SS'' . Consulte aquí: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_now . Un hecho interesante es que es posible obtener el formato de fecha y hora ejecutando esta consulta: SHOW VARIABLES LIKE ''d%e_format'' , el resultado podría ser algo como esto:

Variable_name Value date_format %Y-%m-%d datetime_format %Y-%m-%d %H:%i:%

Las variables aquí arriba son variables de solo lectura. Así que no puedes cambiarlo. Supongo que la función MySQL NOW() obtiene su formato de la variable datetime_format .

date_create () -> format () VS date ()

Los datos favorables de date_create(''now'')->format(''Ymd H:i:s'') sobre la date(''Ymd H:i:s'') son:

  • Manipulaciones más fáciles de manejar.
  • más fácil de manejar zonas horarias
  • mas oop

Manipulaciones más fáciles de manejar.

date_create() acepta un formato de fecha / hora relativo (como now , yesterday o +1 day ) vea este enlace , ejemplo:

$tomorrow = date_create(''+1 day'')->format(''Y-m-d H:i:s'');

date() acepta un formato de fecha / hora relativo, como este:

$tomorrow = date(''Y-m-d H:i:s'', strtotime(''+1 day'')); $tomorrow = date(''Y-m-d H:i:s'', (time() + 86400)); // 86400 seconds = 1 day

más fácil de manejar zonas horarias

Cuando las zonas horarias son importantes, el uso de date_create()->format() tiene mucho más sentido que date() porque date() usa la zona horaria predeterminada que está configurada en php.ini en la directiva date.timezone . (enlace: http://php.net/manual/en/datetime.configuration.php#ini.date.timezone ). Es posible cambiar la zona horaria, por ejemplo, date_default_timezone_set(''Asia/Tokyo''); . Pero la desventaja de esto es que afectará a todas las funciones de fecha / hora. Este problema no existe si está utilizando date_create()->format() en combinación con timezone_open() .

Vea una lista de todas las zonas horarias compatibles: http://php.net/manual/en/timezones.php . Lo curioso es que incluso es compatible con el círculo ártico y la Antártida.

mas oop

OOP utiliza objetos de estado completo. Así que prefiero pensar de esta manera:

// Create a DateTime Object. // Use the DateTime that applies for tomorrow. // Give me the datetime in format ''Y-m-d H:i:s'' $tomorrow = date_create(''+1 day'')->format(''Y-m-d H:i:s'');

Entonces pensar de esta manera:

// Give me a date time string in format ''Y-m-d H:i:s'', // use strtotime() to calculate the Unix timestamp that applies for tomorrow. $tomorrow = date(''Y-m-d H:i:s'', strtotime(''+1 day''));

Por lo tanto, diría que el date_create()->format() es más legible para mí que date() .

Ejemplo de date_create () -> formato ()

Utilizo este enfoque para mis proyectos si tengo que llenar una matriz. Me gusta esto:

$array = array( ''name'' => ''John'', ''date_time'' => date_create(''now'')->format(''Y-m-d H:i:s''), // uses the default timezone ''date_time_japan'' => date_create(''now'', timezone_open(''Asia/Tokyo''))->format(''Y-m-d H:i:s''), );