Me gustaría enfatizar cómo tanto Usted como @troelskn enviaron la misma respuesta el 3 de enero del año 2010. a las 17:08, pero aún recibió ~ 800 votos a favor más. Su respuesta fue probablemente unos segundos aparte de la suya. :) Gracias por escribirlo de todos modos: D
Aleksandar
9 segundos después (visible si coloca el cursor sobre la etiqueta "contestado")
Grzegorz Oledzki
110
Con la versión PHP> = 5.4 DateTime puede hacer esto: -
buena idea envolviendo el constructor y formateándolo correctamente.
acme
por fin php comenzó a copiar desde delphi y c # :)
Erçin Dedeoğlu
1
Esto puede ser agradable, pero no responde a la pregunta en absoluto, no es más fácil ni más rápido hacerlo de esta manera
Aspedido el
8
@Asped ¿De qué manera no responde la pregunta? Es una función PHP que "devuelve la fecha y la hora en el mismo formato que la función MySQL NOW ()", que es precisamente la pregunta.
vascowhite
@vascowhite: la pregunta era si hay una función específica para este propósito. Por tanto, la respuesta es no. todas las otras posibilidades enumeradas aquí pueden estar funcionando y la suya también es agradable, pero no ayuda, ya que el tipo que preguntaba ya sabía cómo hacerlo, pero quería una función más sencilla y de un solo propósito, que la suya no es :)
Aspedió el
34
Utiliza esta función:
function getDatetimeNow(){
$tz_object =newDateTimeZone('Brazil/East');//date_default_timezone_set('Brazil/East');
$datetime =newDateTime();
$datetime->setTimezone($tz_object);return $datetime->format('Y\-m\-d\ h:i:s');}
Bien, si desperdicias personajes como ese, nos quedaremos sin ellos.
Bill Karwin
44
sí, mi mal, el tiempo () no es realmente necesario
streetparade
15
8 personajes, en realidad.
Henrik Erlandsson
52
considerando todos los desperdicios por aquí, me parece bastante vergonzoso que haya usado comillas dobles
Augie Gardner
37
¡Imagina todos los personajes desperdiciados al comentar sobre el desperdicio de personajes!
Pwnball
25
Respuesta corta
$now = date_create()->format('Y-m-d H:i:s');
Lea a continuación la respuesta larga.
La imitación de la función MySQL NOW () en PHP
Aquí hay una lista de formas en PHP que imitan la NOW()función MySQL .
// relative date
$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 =newDateTime('now')->format('Y-m-d H:i:s');// syntax error!!!
$now =(newDateTime('now'))->format('Y-m-d H:i:s');// works in php 5.4 and higher
$now = date('Y-m-d H:i:s');// Slightly higher performance, but less usable for date/time manipulations// From Unix timestamp// Using date_create() with a Unix timestamp will give you a FALSE, // and if you try to invoke format() on a FALSE then you'll get a: // Fatal error: Call to a member function format() on boolean // So if you work with Unix timestamps then you could use: date_create_from_format().
$unixTimeStamp =1420070400;// 01/01/2015 00:00:00
$y2015 = date_create_from_format('U', $unixTimeStamp, timezone_open('Europe/Amsterdam'))->format('Y-m-d H:i:s');
$y2015 = date('Y-m-d H:i:s', $unixTimeStamp);
Creo que date_create()->format('Y-m-d H:i:s')es la mejor manera porque este enfoque le permite manejar las manipulaciones de tiempo / zona horaria más fácilmente date('Y-m-d H:i:s')y funciona desde php 5.2.
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:
Cuando las zonas horarias son importantes, el uso de date_create()->format()tiene mucho más sentido date()porque date()utiliza la zona horaria predeterminada que está configurada en php.inila date.timezonedirectiva. Enlace: http://php.net/manual/en/datetime.configuration.php#ini.date.timezone .
Es posible cambiar la zona horaria durante el tiempo de ejecución. Ejemplo:
date_default_timezone_set('Asia/Tokyo');.
La desventaja de esto es que afectará todas las funciones de fecha / hora. Este problema no existe si está usando date_create()->format()en combinación contimezone_open() .
PHP admite las principales zonas horarias. Lo curioso es que incluso es compatible con el círculo polar ártico y la Antártida. ¿Alguna vez has oído hablar Longyearbyen? Si no, entonces no se preocupe, yo tampoco hasta que leí la documentación oficial de PHP.
OOP utiliza objetos con estado completo. Entonces 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()enfoque es más legible para mí date().
date_create () VS new DateTime ()
Los hechos favorables de date_create()más new DateTime()son:
Espacios de nombres
Espacios de nombres
Si trabaja en un espacio de nombres y desea inicializar un objeto DateTime con la nueva palabra clave, debe hacerlo así:
namespace my_namespace;// The backslash must be used if you are in a namespace.// Forgetting about the backslash results in a fatal error.
$dt =new \DateTime();
No hay nada de malo en esto, pero la desventaja de lo anterior es que la gente olvida esporádicamente la barra invertida. Al usar la date_create()función de constructor no tiene que preocuparse por los espacios de nombres.
$dt = date_create();// in or not in a namespace it works in both situations
Ejemplo de date_create () -> format ()
Utilizo este enfoque para mis proyectos si tengo que llenar una matriz. Me gusta esto:
Esta es la fecha ISO 8601 (agregada en PHP 5) que utiliza MySQL
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. Vea la respuesta aquí para obtener más detalles: https://stackoverflow.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:00en la base de datos, solo 2015-07-27T00:00:00se almacenará (¡pero esa es la hora local correcta!).
Para estar seguro, use siempre UTC en el servidor, especifíquelo en MySQL y PHP, y luego solo conviértalo a la configuración regional de su usuario cuando muestre la fecha:
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
Sin embargo, para la depuración prefiero una más corta ( 3v4l.org ):
Me gusta la solución publicada por user1786647, y la actualicé un poco para cambiar la zona horaria a un argumento de función y agregar soporte opcional para pasar una cadena de hora Unix o datetime para usar para el sello de fecha devuelto.
También incluye una alternativa para "setTimestamp" para usuarios que ejecutan versiones inferiores a PHP 5.3:
echo now();//2020-03-10 22:10
echo now()->addDay(1);//2020-03-11 22:10
echo now()->addDay(1)->addHour(1);// //2020-03-11 23:10
echo now()->addDay(1)->addHour(1)->addMinute(30);// //2020-03-11 23:40
echo now()->addDay(1)->addHour(1)->addMinute(30)->addSecond(10);// //2020-03-11 23:50//or u can use get method for example
echo now()->addDay(1)->addHour(1)->addMinute(30)->get();// //2020-03-11 23:40
¿Por qué alguien necesitaría una clase completa para algo que pueda satisfacerse por completo en una línea de código? Si algo en este TLDR es valioso, es la respuesta correcta a la pregunta incorrecta.
mickmackusa
porque ahora es objeto cada vez
dılo sürücü
El OP solo ha pedido una cadena de fecha con formato específico. Nada mas. Sin manipulaciones de fecha / hora. Esta es la respuesta correcta a la pregunta incorrecta.
mickmackusa
ı código editado repita mira el código ...
dılo sürücü
Su edición ha copiado la solución sugerida de 3 de las 5 respuestas principales en esta página. Está contribuyendo a la hinchazón de la página (contenido redundante y consejos fuera de alcance) y esto no es bueno para Stackoverflow.
Respuestas:
No además de la función de fecha :
fuente
date_default_timezone_set
funciónMire aquí para más detalles: http://pl.php.net/manual/en/function.date.php
fuente
Con la versión PHP> = 5.4 DateTime puede hacer esto: -
Véalo trabajando .
fuente
Utiliza esta función:
fuente
Prueba esto:
fuente
Respuesta corta
Lea a continuación la respuesta larga.
La imitación de la función MySQL NOW () en PHP
Aquí hay una lista de formas en PHP que imitan la
NOW()
función MySQL .Creo que
date_create()->format('Y-m-d H:i:s')
es la mejor manera porque este enfoque le permite manejar las manipulaciones de tiempo / zona horaria más fácilmentedate('Y-m-d H:i:s')
y funciona desde php 5.2.Función MySQL NOW ()
La función de MySQL
NOW()
proporciona el valor fechaHora en este formato:'YYYY-MM-DD HH:MM:SS'
. Ver 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:Las variables aquí arriba son variables de solo lectura. Entonces no puedes cambiarlo.
Supongo que la
NOW()
función MySQL obtiene su formato de ladatetime_format
variable.Las ventajas de date_create () -> format () en lugar de date () resumen
Los hechos favorables de
date_create('now')->format('Y-m-d H:i:s')
másdate('Y-m-d H:i:s')
son:Las desventajas de date_create () -> format () en lugar de date ()
La función
date()
tiene un rendimiento ligeramente mejor quedate_create()->format()
. Ver prueba de referencia a continuación.La mayúscula muestra que
date()
es más rápido. Sin embargo, si cambiamos un poco el escenario de prueba, el resultado será diferente. Vea abajo:El método DateTime:
format()
es más rápido aquí quedate()
.Las ventajas de date_create () -> format () en lugar de date () detallado
Siga leyendo para obtener una explicación detallada.
manipulaciones de tiempo más fáciles de manejar
date_create()
acepta un formato de fecha / hora relativo (comonow
,yesterday
o+1 day
) vea este enlace , ejemplo:date()
también acepta un formato de fecha / hora relativo, como este:más fácil de manejar zonas horarias
Cuando las zonas horarias son importantes, el uso de
date_create()->format()
tiene mucho más sentidodate()
porquedate()
utiliza la zona horaria predeterminada que está configurada enphp.ini
ladate.timezone
directiva. Enlace: http://php.net/manual/en/datetime.configuration.php#ini.date.timezone .Es posible cambiar la zona horaria durante el tiempo de ejecución. Ejemplo:
date_default_timezone_set('Asia/Tokyo');
.La desventaja de esto es que afectará todas las funciones de fecha / hora. Este problema no existe si está usando
date_create()->format()
en combinación contimezone_open()
.PHP admite las principales zonas horarias. Lo curioso es que incluso es compatible con el círculo polar ártico y la Antártida. ¿Alguna vez has oído hablar
Longyearbyen
? Si no, entonces no se preocupe, yo tampoco hasta que leí la documentación oficial de PHP.Consulte una lista de todas las zonas horarias compatibles: http://php.net/manual/en/timezones.php .
oop
OOP utiliza objetos con estado completo. Entonces prefiero pensar de esta manera:
Entonces pensar de esta manera:
Por lo tanto, diría que el
date_create()->format()
enfoque es más legible para mídate()
.date_create () VS new DateTime ()
Los hechos favorables de
date_create()
másnew DateTime()
son:Espacios de nombres
Si trabaja en un espacio de nombres y desea inicializar un objeto DateTime con la nueva palabra clave, debe hacerlo así:
No hay nada de malo en esto, pero la desventaja de lo anterior es que la gente olvida esporádicamente la barra invertida. Al usar la
date_create()
función de constructor no tiene que preocuparse por los espacios de nombres.Ejemplo de date_create () -> format ()
Utilizo este enfoque para mis proyectos si tengo que llenar una matriz. Me gusta esto:
fuente
Estaba buscando la misma respuesta y se me ocurrió esta solución para PHP 5.3 o posterior:
fuente
La función MySQL
NOW()
devuelve la marca de tiempo actual. La única forma que encontré para PHP es usando el siguiente código.fuente
Una respuesta más que encuentro fácil de usar:
Esta es la fecha ISO 8601 (agregada en PHP 5) que utiliza MySQL
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
. Vea la respuesta aquí para obtener más detalles: https://stackoverflow.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, solo2015-07-27T00:00:00
se almacenará (¡pero esa es la hora local correcta!).Cuando vuelvo a cargar el tiempo en PHP,
asumirá automáticamente que es la
+02:00
zona horaria, ya que es la predeterminada. Imprimir esto será correcto nuevamente:Para estar seguro, use siempre UTC en el servidor, especifíquelo en MySQL y PHP, y luego solo conviértalo a la configuración regional de su usuario cuando muestre la fecha:
fuente
Uso
strftime
:%F
es el mismo que%Y-%m-%d
.%T
es el mismo que%H:%M:%S
.Aquí hay una demostración de ideone.
fuente
O puedes usar
DateTime
constantes :Aquí está la lista de ellos:
Sin embargo, para la depuración prefiero una más corta ( 3v4l.org ):
fuente
Me gusta la solución publicada por user1786647, y la actualicé un poco para cambiar la zona horaria a un argumento de función y agregar soporte opcional para pasar una cadena de hora Unix o datetime para usar para el sello de fecha devuelto.
También incluye una alternativa para "setTimestamp" para usuarios que ejecutan versiones inferiores a PHP 5.3:
fuente
Puede usar la función de fecha PHP con el formato correcto como parámetro,
fuente
No hay una
now()
función PHP incorporada, pero puede hacerlo usandodate()
.Ejemplo
Puede usarlo
date_default_timezone_set()
si necesita cambiar la zona horaria.De lo contrario, puede utilizar Carbon : una extensión simple de la API de PHP para DateTime.
fuente
Si desea obtener tiempo ahora, incluido AM / PM
Sale
2020-05-01 05:45:28 pm
o
Sale
2020-05-01 05:45:28 PM
fuente
dentro de poco
php advanced now class extra addMinute addYear como tal addHour, etc.
utilizando
fuente
El equivalente de PHP es
time()
: http://php.net/manual/en/function.time.phpfuente
time() Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).