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


Respuestas:


624

La hora pasaría por la hora de su servidor. Una solución fácil para esto es establecer manualmente la zona horaria utilizando date_default_timezone_setantes de que se invoquen las funciones date()o time().

Estoy en Melbourne, Australia , así que tengo algo como esto:

date_default_timezone_set('Australia/Melbourne');

O otro ejemplo es LA - EE . UU . :

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 todas las horas serían para la zona horaria que acaba de configurar :)


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

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

43
@AyexeM Realmente aprecié la información adicional de la zona horaria. Me salvó una segunda búsqueda.
Marquizzo

55
Puede obtener toda la zona horaria desde aquí Zona horaria
Yousef Altaf

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

524
// 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 zona horaria, consulte la Lista de zonas horarias admitidas .


12
Esta es una respuesta mucho más directa que la principal. ¡Gracias!
dev_willis

1
Gracias por el enlace de zonas horarias compatibles, estaba a punto de
googlearlo

190

Desde PHP 5.2.0puedes usar la 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();

2
esta es una buena respuesta, pero se olvidó de decir que necesitamos usar \ Datetime antes de llamarlo :) ty
Amor.o

@ Amor.o Gracias por el aviso, he actualizado la respuesta ahora, aunque un poco tarde y honestamente no recuerdo haber recibido una notificación por su comentario. Con respecto al uso del Datatimeespacio de nombres; No recuerdo si ese fue el caso en 2013 y no he escrito ningún código PHP en años. De todos modos, su sugerencia parece ser correcta, así que gracias de nuevo.
Mahdi

De
nada

96

Referencia: aquí hay 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 código 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)

sin duda el mejor ~
Yash Kumar Verma

67

El tiempo de PHP () devuelve una marca de tiempo actual de Unix. Con esto, puede usar la función date () para formatearlo según sus necesidades.

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

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

$date = date('Format String');

17
se supone que el segundo argumento de la función de fecha es hora () si se deja vacío.
Paolo Bergantino

66

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


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

@ prohibición de geoingeniería: no estoy seguro de qué quiere decir con "independiente de la zona horaria"; es "dependiente" en 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 el

56

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

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

Según su código de ejemplo anterior, querrá formatear esta información una vez que obtenga la marca de tiempo de Unix . El tiempo Unix sin formato se ve así:1232659628

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

Una buena referencia para las formas de usar la date()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());

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

La mejor respuesta sin dudas. Incluso agrega cómo pasar de la marca de tiempo UNIX a la fecha de persona normal, lo cual es muy apreciado
Kolob Canyon

45

La función de fecha de PHP 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 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)

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

Actualizar

 //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, la función date () de PHP es útil.



25

Para el nuevo programador PHP podría confundir por qué hay muchos métodos para obtener la fecha y hora actuales y cuál usar en su proyecto.

1. datemé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 aquí

2. DateTimeclase (PHP 5> = 5.2.0, PHP 7)

cuando desee usar 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 aquí

3. Paquete de tiempo de fecha de carbono

Si está utilizando Composer , Laravel , Symfony o cualquier otro 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. Esto incorpora marcos como laravel para que no tenga 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 aquí

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


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: procesal, orientado a objetos y marco OOP .
s3c

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

21

Utilizar:

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

Funciona.


Lo que quiero decir es que el tiempo vuelve EST cuando estoy PST ... pero ¿por qué? ¿Es la hora del servidor y el servidor es EST? ¿Puedo dar tiempo a los usuarios? Su servidor puede ser otra zona horaria, ¿no?

La función de fecha es la hora de su servidor, verifíquelo o configúrelo temporalmente con 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!

Este $ date = date ('m / d / Y h: i: s a', time ()); obtiene la fecha del servidor pero aún 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.

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

18
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.


1
Votado negativamente por respuesta engañosa. No, no obtendrá el tiempo de su máquina local, a menos que también esté ejecutando el servidor localmente. Obtendrá la fecha y hora del servidor.
MattWithoos

@MattWithoos - "Este código obtendrá la fecha y hora del" servidor ", no dijo nada acerca de la" máquina local "que usted dijo. Tampoco tiene que ejecutar su servidor" localmente - puede tener un servidor en cualquier lugar del mundo con la zona horaria que desee. Su voto negativo fue totalmente incorrecto y sin ninguna razón
Neal Davis

1
@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.
MattWithoos

1
@NealDavis Además, si te molestaste en leer la publicación original, literalmente decía "Este código obtendrá la fecha y hora de tu máquina local (PC)". Eso es completamente engañoso.
MattWithoos

16

También puedes usar este formato:

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

O

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

14

Según el artículo Cómo obtener la fecha y hora actual (AHORA) con PHP , hay dos formas comunes de obtener la fecha actual. Para obtener la fecha y hora actual (ahora) con PHP, puede usar la dateclase con cualquier versión de PHP, o mejor la datetimeclase con PHP> = 5.2.

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

Ejemplo usando fecha

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

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

Ejemplo usando la clase datetime

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

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

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

Impresiones como esta

Domingo 9 de diciembre de 2012


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)
?>

11

Establezca su zona horaria:

date_default_timezone_set('Asia/Calcutta');

Luego llame a las funciones de fecha

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

11
date(format, timestamp)

La datefunció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 proporciona ninguna marca de tiempo. En otras palabras, timestampes opcional y su valor predeterminado es el tiempo ().

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 obtener una cita simple

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

Aquí hay algunos caracteres que se usan comúnmente para 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 (minúscula 'L'): representa el día de la semana

También "/", ".", or "-"se pueden insertar otros caracteres, como, entre los caracteres para agregar formato adicional.

El siguiente ejemplo formatea la fecha de hoy de tres maneras 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


10

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");

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

"zona horaria", probablemente.
Saneem

2
Creo @Jaymin puede significar si desea ajustar el tiempo por delante un día, un mes atrás, etc
simplemente Alta

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


10

Puedes usar este código:

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

9

Descubrí que la forma más simple 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'); 

8

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

$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



6
// 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));

6

Si usted es bangladesí y desea obtener el tiempo de Dacca , use esto:

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

6

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.

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.


¡fijó la fecha en 1970 para mí!
iKamy

5

Aquí hay algunos caracteres que se usan comúnmente por momentos:

  1. h: formato de 12 horas de una hora con ceros a la izquierda (01 a 12)
  2. i - Minutos con ceros a la izquierda (00 a 59)
  3. s - Segundos con ceros a la izquierda (00 a 59)
  4. a - Minúsculo Ante meridiem y Post meridiem (am o pm)

Obtenga su zona horaria

<?php
    date_default_timezone_set("America/New_York");
    echo "The time is " . date("h:i:sa");
?>

Mira esto (opcional)

<?php
    $d = mktime(11, 14, 54, 8, 12, 2014);
    echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>

Para la fecha

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

Aquí hay algunos caracteres que se usan comúnmente para 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 (minúscula 'L'): representa el día de la semana

Fuente-W3-Escuelas


1
¿Cuál es el propósito del arrastre .en date("Y/m/d") . ;?
Peter Mortensen

Para concatenar otra cadena o variable, supongo. Gracias por tus ediciones. :-)
Raheel Khan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.