¿Cómo obtengo la fecha y hora actual en PHP?

¿Qué función de PHP puede devolver la fecha / hora actual?

preguntado el 22 de enero de 09 a las 18:01

TLDR; $date = date('m/d/Y h:i:s a', time()); -

parece que no podemos obtener la hora del sistema que está visitando el sitio excepto usando javascript. Para PHP, podemos establecer una zona horaria fija para obtener la hora actual de esa zona. -

30 Respuestas

El tiempo pasaría por la hora de su servidor. Una solución fácil para esto es configurar manualmente la zona horaria usando date_default_timezone_set antes de date() or time() se llama a las funciones.

Estoy en Melbourne Australia entonces tengo algo como esto:

date_default_timezone_set('Australia/Melbourne');

O otro ejemplo es LA - US:

date_default_timezone_set('America/Los_Angeles');

También puede ver en qué zona horaria se encuentra actualmente el servidor a través de:

date_default_timezone_get();

Entonces algo como:

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

Entonces, la respuesta corta para su pregunta sería:

// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());

Entonces todos los tiempos serían para la zona horaria que acaba de establecer :)

Respondido 15 ago 14, 22:08

La llamada a time () es redundante, date () usará automáticamente la hora actual. - demasiado php

OP nunca preguntó sobre la zona horaria. Una respuesta más simple y correcta simplemente mostraría la hora del servidor. - AyexeM

@AyexeM De hecho, aprecié la información adicional sobre la zona horaria. Me salvó una segunda búsqueda. - Marquizzo

Puedes obtener toda la zona horaria desde aquí huso horario - Yousef Altaf

@AyexeM Una respuesta más simple y correcta no sería omitir información potencialmente importante y relacionada, sino responder la pregunta, como sugiere, pero luego proporcionar información adicional sobre las zonas horarias debajo de ella. No es necesario omitir información potencialmente crucial solo porque no fue solicitada. - Jamie

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

// Or:
$date = date('Y/m/d H:i:s');

// This would return the date in the following formats respectively:
$date = '2012-03-06 17:33:07';
// Or
$date = '2012/03/06 17:33:07';

/** 
 * This time is based on the default server time zone.
 * If you want the date in a different time zone,
 * say if you come from Nairobi, Kenya like I do, you can set
 * the time zone to Nairobi as shown below.
 */

date_default_timezone_set('Africa/Nairobi');

// Then call the date functions
$date = date('Y-m-d H:i:s');
// Or
$date = date('Y/m/d H:i:s');

// date_default_timezone_set() function is however
// supported by PHP version 5.1.0 or above.

Para obtener una referencia de la zona horaria, consulte Lista de zonas horarias admitidas.

Respondido 05 Jul 18, 08:07

Esta es una respuesta mucho más sencilla que la anterior. ¡Gracias! - dev_willis

Gracias por el enlace de las zonas horarias admitidas, estaba a punto de buscarlo en Google :) - htafoya

Desde PHP 5.2.0 se puede utilizar el DateTime() clase:

use \Datetime;

$now = new DateTime();
echo $now->format('Y-m-d H:i:s');    // MySQL datetime format
echo $now->getTimestamp();           // Unix Timestamp -- Since PHP 5.3

Y para especificar el timezone:

$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London'));    // Another way
echo $now->getTimezone();

respondido 16 mar '20, 08:03

esta es una buena respuesta, pero olvidó decir que necesitamos usar \ Datetime antes de llamarlo :) ty - amor

@ Amor.o Gracias por el aviso, he actualizado la respuesta ahora, aunque un poco tarde y, sinceramente, no recuerdo haber recibido una notificación por tu comentario. Respecto al uso de Datatime espacio de nombres; No recuerdo si ese fue el caso en 2013 y no he escrito ningún código PHP durante años. Independientemente, su sugerencia parece ser correcta, así que gracias de nuevo. - Mahdi

Referencia: Aquí está un enlace

Esto puede ser más confiable que simplemente sumar o restar la cantidad de segundos en un día o un mes a una marca de tiempo debido al horario de verano.

El codigo PHP

// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)

Respondido el 24 de Septiembre de 16 a las 11:09

ciertamente el mejor ~ - Yash Kumar Verma

PHP hora() devuelve una marca de tiempo actual de Unix. Con esto, puede utilizar el fecha() función para formatearlo según sus necesidades.

$date = date('Format String', time());

Como mencionó Paolo en los comentarios, el segundo argumento es redundante. El siguiente fragmento es equivalente al anterior:

$date = date('Format String');

Respondido 22 Feb 19, 23:02

se supone que el segundo argumento de la función de fecha es time () si se deja vacío. - paolo bergantino

Puedes usar el $_SERVER['REQUEST_TIME'] variable (disponible desde PHP 5.1.0) o el time() función para obtener la marca de tiempo actual de Unix.

Respondido el 22 de enero de 09 a las 20:01

Vale la pena señalar que la marca de tiempo devuelta por time() La función es independiente de la zona horaria. (Así que llamando date_default_timezone_set("your-particular-timezone"); antes no tendrá ningún efecto.) - prohibición de la geoingeniería

@ ban-geoengineering - no estoy seguro de lo que quiere decir con "independiente de la zona horaria"; ¿Es "dependiente" de la zona horaria en la que está configurado el servidor? Puede tener un servidor en la costa este configurado en una zona horaria en la costa oeste o viceversa. - neal davis

Puede utilizar tanto el $_SERVER['REQUEST_TIME'] variable o la time() función. Ambos devuelven una marca de tiempo de Unix.

La mayoría de las veces, estas dos soluciones producirán exactamente el mismo Marca de tiempo de Unix. La diferencia entre estos es que $_SERVER['REQUEST_TIME'] devuelve la marca de tiempo de la solicitud de servidor más reciente y time() devuelve la hora actual. Esto puede crear pequeñas diferencias en la precisión según su aplicación, pero en la mayoría de los casos ambas soluciones deberían ser suficientes.

Según el código de ejemplo anterior, querrá formatear esta información una vez que obtenga el Marca de tiempo de Unix. Sin formato Tiempo Unix parece: 1232659628

Entonces, para obtener algo que funcione, puede usar el date() función para formatearlo.

Una buena referencia de formas de utilizar el date() La función se encuentra en el Manual de PHP.

Como ejemplo, el siguiente código devuelve una fecha similar a esta: 01/22/2009 04:35:00 pm :

echo date("m/d/Y h:i:s a", time());

respondido 11 nov., 18:11

¿Cómo se manejan los diferentes servidores web? $_SERVER['REQUEST_TIME'] ? - marcapasos

La mejor respuesta sin duda. Incluso agrega cómo pasar de la marca de tiempo de UNIX a la fecha de la persona normal, lo cual es muy apreciado: Cañón de Kolob

PHP datos La función puede hacer este trabajo.

fecha()

Descripción

string date(string $format [, int $timestamp = time()])

Devuelve una cadena formateada de acuerdo con la cadena de formato dada utilizando la marca de tiempo entera dada o la hora actual si no se proporciona ninguna marca de tiempo.

Ejemplos:

$today = date("F j, Y, g:i a");               // March 10, 2001, 5:16 pm
$today = date("m.d.y");                       // 03.10.01
$today = date("j, n, Y");                     // 10, 3, 2001
$today = date("Ymd");                         // 20010310
$today = date('h-i-s, j-m-y, it is w Day');   // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y");             // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');   // 17:03:18 m is month
$today = date("H:i:s");                       // 17:16:18
$today = date("Y-m-d H:i:s");                 // 2001-03-10 17:16:18 (the MySQL DATETIME format)

Respondido 22 Feb 19, 23:02

Para el nuevo programador de PHP, puede confundirse por qué hay muchos métodos para obtener la fecha y hora actual y cuál usar en su proyecto.

1. date Método (PHP 4, PHP 5, PHP 7)

Esta es la forma más común y más fácil de obtener la fecha y la hora en php.

// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');


// Prints something like: Monday
echo date("l");

// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* use the constants in the format parameter */
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// prints something like: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

Puedes aprender más sobre esto en aquí

2. DateTime clase (PHP 5> = 5.2.0, PHP 7)

cuando desee utilizar PHP con OOP, esta es la mejor manera de obtener la fecha y la hora.

<?php
// Specified date/time in your computer's time zone.
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Specified date/time in the specified time zone.
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in your computer's time zone.
$date = new DateTime();
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in the specified time zone.
$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Using a UNIX timestamp.  Notice the result is in the UTC time zone.
$date = new DateTime('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Non-existent values roll over.
$date = new DateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

Puedes aprender más sobre esto en aquí

3. Paquete de fecha y hora de carbono

si estás usando Dial En, laravel, Symfony o cualquier tipo de marco, esta es la mejor manera de obtener la fecha y la hora. Además, este paquete extiende la clase DateTime en php para que use todo el método en la clase Datetime. Estos marcos incorporados como laravel, por lo que no tiene que instalarlo por separado.

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();

// Carbon embed 823 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');

$officialDate = Carbon::now()->toRfc2822String();

$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;

$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');

$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

Puedes aprender más sobre esto en aquí

Espero que esto ayude y si conoce alguna otra forma de obtener la fecha y la hora, no dude en editar la respuesta.

Respondido el 15 de junio de 19 a las 18:06

Me gustaron algunas otras respuestas que muestran cómo formatear la cadena incluso con texto personalizado, o digamos qué formato es mejor para MySQL, etc., pero definitivamente aceptaría esta para mostrar los tres tipos y usos: procedimiento, orientado a objetos y marco de programación orientada a objetos . - s3c

@ s3c Podría haber respondido algo así, pero la pregunta es "¿Cómo obtengo la fecha y hora actual en PHP?", nuestro enfoque principal debería estar en la pregunta. :) - Supun Praneeth

 $date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
 echo $date->format('d-m-Y H:i:s');

Noticias

 //Also get am/pm in datetime:
 echo $date->format('d-m-Y H:i:s a'); // output 30-12-2013 10:16:15 am

Para el formato de fecha, Función PHP date () es útil.

Respondido 02 Feb 14, 10:02

es muy simple

echo $ fecha = fecha ('Ymd H: i: s');

Respondido 25 Feb 19, 04:02

Uso:

$date = date('m/d/Y h:i:s a', time());

Funciona.

Respondido 22 Feb 19, 23:02

Lo que quiero decir es que el tiempo vuelve EST cuando estoy en el PST ... pero ¿por qué? ¿Es la hora del servidor y el servidor es EST? ¿Puedo obtener tiempo de los usuarios? Su servidor puede estar en otra zona horaria, ¿no? - Miguel

La función de fecha es la hora de su servidor, verifíquela o configúrela temporalmente / w PHP antes de ejecutar la fecha. - TravisO

gracias, mi servicio no debe estar actualizado con php porque O funciona para GMT pero no para la zona horaria P o "e" ... ¡¡Gracias !! - Miguel

Esta $ fecha = fecha ('m / d / Y h: i: s a', hora ()); obtiene la fecha del servidor pero todavía no me da la fecha del usuario. Esto me muestra en EST cuando estoy en PST. Quiero obtener la fecha en que el usuario envía el formulario y, como yo, su servidor puede estar en una zona horaria diferente. - Miguel

En realidad, ahora que lo pienso, la hora no es tan importante como la fecha. ¡¡GRACIAS A TODOS!! - Miguel

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

Este código obtendrá la fecha y hora del servidor en el que se ejecuta el código.

Respondido 09 Jul 17, 10:07

Votado en contra por respuesta engañosa. No, no obtendrá la hora de su máquina local, a menos que también esté ejecutando el servidor localmente. Obtendrá la fecha y hora del servidor. - Matt Withoos

@MattWithoos - "Este código obtendrá la fecha y la hora del" servidor ". No dijo nada sobre la" máquina local "que dijiste. No tienes que estar ejecutando tu servidor" localmente "tampoco - puedes tener un servidor en cualquier lugar del mundo, establezca la zona horaria que desee. Su voto en contra fue totalmente incorrecto y sin ningún motivo: neal davis

@NealDavis ¿Pensaste en mirar la edición? Publiqué ese comentario, sugerí una edición de la información incorrecta y, mientras tanto, esperé a que se aprobara. Ahora está aprobado y muestra la información correcta. - Matt Withoos

@NealDavis Además, si se molestó en leer la publicación original, literalmente decía "Este código obtendrá la fecha y hora de su máquina local (PC)". Eso es completamente engañoso. - Matt Withoos

También puede utilizar este formato:

$date = date("d-m-Y");

Or

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

Respondido 22 Feb 19, 23:02

Segun el articulo Cómo obtener la fecha y hora actual (AHORA) con PHP, hay dos formas habituales de obtener la fecha actual. Para obtener la fecha y hora actual (ahora) con PHP, puede usar el date clase con cualquier versión de PHP, o mejor el datetime clase con PHP> = 5.2.

Varias expresiones de formato de fecha están disponibles aquí.

Ejemplo usando fecha

Esta expresión regresará AHORA en formato Y-m-d H:i:s.

<?php
    echo date('Y-m-d H:i:s');
?>

Ejemplo usando la clase de fecha y hora

Esta expresión regresará AHORA en formato Y-m-d H:i:s.

<?php
    $dt = new DateTime();
    echo $dt->format('Y-m-d H:i:s');
?>

Respondido 02 Feb 14, 10:02

<?php
echo "<b>".date('l\, F jS\, Y ')."</b>";
?>

Impresiones como esta

Domingo, diciembre 9th, 2012

Respondido el 09 de diciembre de 12 a las 08:12

<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>

Respondido el 19 de enero de 17 a las 09:01

Establezca su zona horaria:

date_default_timezone_set('Asia/Calcutta');

Luego llama a las funciones de fecha

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

contestado el 05 de mayo de 14 a las 12:05

date(format, timestamp)

Los programas date La función devuelve una cadena formateada de acuerdo con la cadena de formato dada usando la marca de tiempo entera dada o la hora actual si no se da ninguna marca de tiempo. En otras palabras, timestamp es opcional y tiene el valor predeterminado de time ().

Y los parámetros son:

formato: obligatorio. Especifica el formato de la marca de tiempo.

marca de tiempo: (opcional) especifica una marca de tiempo. El valor predeterminado es la fecha y hora actuales

Cómo conseguir una cita sencilla

El parámetro de formato requerido del date() La función especifica cómo formatear el date (or time).

A continuación se muestran algunos caracteres que se utilizan comúnmente para las fechas:

  1. d - Representa el día del mes (01 a 31)
  2. m - Representa un mes (01 a 12)
  3. Y: representa un año (en cuatro dígitos)
  4. l ('L' minúscula): representa el día de la semana

Otros personajes, como "/", ".", or "-" también se puede insertar entre los caracteres para agregar formato adicional.

El siguiente ejemplo formatea la fecha de hoy de tres formas diferentes:

<?php
    echo "Today is " . date("Y/m/d") . "<br>";
    echo "Today is " . date("Y.m.d") . "<br>";
    echo "Today is " . date("Y-m-d") . "<br>";
    echo "Today is " . date("l");
?>

Algunos enlaces útiles

Respondido 22 Feb 19, 23:02

Si desea una escala de tiempo diferente, utilice:

$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);

date_default_timezone_set("Asia/Calcutta");
echo date("Y/m/d H:i:s");

Respondido 02 Feb 14, 10:02

¿Qué quieres decir con "escala de tiempo"? - Pedro Mortensen

"zona horaria", probablemente. - Saneem

Creo que @Jaymin puede querer decir si desea ajustar el tiempo un día antes, un mes atrás, etc. Simplemente alto

date_default_timezone_set('Europe/Warsaw');
echo("<p class='time'>".date('H:i:s')."</p>");
echo("<p class='date'>".date('d/m/Y')."</p>");

contestado el 12 de mayo de 14 a las 22:05

El formato de la fecha también depende:

echo date("d/m/Y H:i:sa"); // 13/04/2017 19:38:15pm

Respondido 22 Feb 19, 23:02

Esto es apenas comprensible. ¿Puedes elaborar? - Pedro Mortensen

Puedes usar este código:

<?php
    $currentDateTime = date('Y-m-d H:i:s');
    echo $currentDateTime;
?>

Respondido 22 Feb 19, 23:02

Descubrí que la forma más sencilla de obtener la hora actual en PHP es algo como esto.

//Prints out something like 10:00am Just be sure to set your timezone correctly.
date_default_timezone_set("America/Chicago");
$TIME = date('G:ia'); 

Respondido 19 Oct 12, 15:10

Otra forma sencilla es tomar la marca de tiempo de la fecha y hora actuales. Usar mktime () función:

$now = mktime(); // Return timestamp of the current time

Luego puede convertir esto a otro formato de fecha:

//// Prints something like: Thursday 26th of January 2017 01:12:36 PM
echo date('l jS \of F Y h:i:s A',$now);

Más formatos de fecha están aquí: http://php.net/manual/en/function.date.php

Respondido 22 Feb 19, 23:02

Muy simple

date_default_timezone_set('Asia/Kolkata');
$date = date('m/d/Y H:i:s', time());

Respondido 02 Abr '19, 18:04

No he visto eso. - Kowsigan Atsayam

// Set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');


// Prints something like: Monday
echo date("l");

// Prints something like: Monday 8th of August 2016 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Prints: July 1, 2016 is on a Saturday
echo "July 1, 2016 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2016));

/* Use the constants in the format parameter */
// Prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// Prints something like: 2016-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

Respondido 22 Feb 19, 23:02

Si es bangladesí y desea obtener el tiempo de Dacca luego usa esto:

$date = new DateTime();
$date->setTimeZone(new DateTimeZone("Asia/Dhaka"));
$get_datetime = $date->format('d.m.Y H:i:s');

Respondido 22 Feb 19, 23:02

Normalmente, esta función para la fecha es útil para todos: fecha ("A / m / d");

Pero el tiempo es algo diferente, porque la función de tiempo depende de la versión de PHP o de la fecha del sistema.

Entonces, probablemente lo use así para obtener nuestra propia zona horaria:

$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('H:m:s');

Esta función muestra el tiempo de 24 horas.

Respondido 23 Feb 19, 00:02

¡Me fijó la fecha en 1970! - iKamy

echo date('y-m-d'); // Today

Esto devolverá la fecha de hoy.

Respondido el 06 de junio de 19 a las 11:06

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