Comment obtenir la date et l'heure actuelles en PHP?


Réponses:


624

Le temps passerait par l'heure de votre serveur. Une solution de contournement simple consiste à définir manuellement le fuseau horaire en utilisant date_default_timezone_setavant d' appeler les fonctions date()ou time().

Je suis à Melbourne, en Australie, donc j'ai quelque chose comme ça:

date_default_timezone_set('Australia/Melbourne');

Ou un autre exemple est LA - US :

date_default_timezone_set('America/Los_Angeles');

Vous pouvez également voir dans quel fuseau horaire le serveur se trouve actuellement via:

date_default_timezone_get();

Donc quelque chose comme:

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

La réponse courte à votre question serait donc:

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

Ensuite, tout le temps serait au fuseau horaire que vous venez de définir :)


101
L'appel à time () est redondant, date () utilisera automatiquement l'heure actuelle.
trop de php le

11
OP n'a jamais posé de questions sur le fuseau horaire. Une réponse plus simple et plus correcte montrerait simplement l'heure du serveur.
AyexeM

43
@AyexeM J'ai réellement apprécié les informations supplémentaires sur le fuseau horaire. Cela m'a sauvé une deuxième recherche.
Marquizzo

5
Vous pouvez obtenir tout le fuseau horaire d'ici Fuseau horaire
Yousef Altaf

13
@AyexeM Une réponse plus simple et plus correcte ne serait pas d'omettre des informations potentiellement importantes et connexes, mais plutôt de répondre à la question, comme vous le suggérez, mais de fournir ensuite des informations supplémentaires sur les fuseaux horaires en dessous. Il n'est pas nécessaire d'omettre des informations potentiellement cruciales simplement parce qu'elles n'ont pas été demandées.
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.

Pour une référence de fuseau horaire, voir Liste des fuseaux horaires pris en charge .


12
C'est une réponse beaucoup plus simple que la première. Merci!
dev_willis

1
Merci pour le lien des fuseaux horaires pris en charge,
j'étais

190

Depuis PHP, 5.2.0vous pouvez utiliser la DateTime()classe:

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

Et pour préciser timezone:

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

2
c'est une bonne réponse, mais vous avez oublié de dire que nous devons utiliser \ Datetime avant de l'appeler :) ty
Amor.o

@ Amor.o Merci pour l'avertissement, j'ai mis à jour la réponse maintenant - bien qu'un peu en retard et honnêtement, je ne me souviens pas avoir reçu une notification pour votre commentaire. Concernant l'utilisation de l' Datatimeespace de noms; Je ne me souviens pas si c'était le cas en 2013 et je n'ai pas écrit de code PHP depuis des années. Quoi qu'il en soit, votre suggestion semble être correcte, alors merci encore.
Mahdi

Vous êtes les bienvenus :)
Amor.o

96

Référence: voici un lien

Cela peut être plus fiable que d'ajouter ou de soustraire simplement le nombre de secondes dans une journée ou un mois à un horodatage en raison de l'heure d'été.

Le code 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)

certainement le meilleur ~
Yash Kumar Verma

67

Le temps de PHP () renvoie un horodatage Unix actuel. Avec cela, vous pouvez utiliser la fonction date () pour le formater à vos besoins.

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

Comme Paolo l'a mentionné dans les commentaires, le deuxième argument est redondant. L'extrait de code suivant est équivalent à celui ci-dessus:

$date = date('Format String');

17
le 2e argument de la fonction date est supposé être time () s'il est laissé vide.
Paolo Bergantino

66

Vous pouvez soit utiliser la $_SERVER['REQUEST_TIME']variable (disponible depuis PHP 5.1.0) ou la time()fonction pour obtenir l'horodatage Unix actuel.


1
Il convient de noter que l'horodatage renvoyé par la time()fonction est indépendant du fuseau horaire. (Donc, appeler date_default_timezone_set("your-particular-timezone");avant n'aura aucun effet.)
ban-geoengineering

@ ban-geoengineering - je ne sais pas exactement ce que vous entendez par "indépendant du fuseau horaire"; il est "dépendant" du fuseau horaire du serveur? Vous pouvez avoir un serveur sur la côte est réglé sur un fuseau horaire sur la côte ouest ou vice versa.
Neal Davis

56

Vous pouvez utiliser à la fois la $_SERVER['REQUEST_TIME']variable ou la time()fonction. Les deux renvoient un horodatage Unix.

La plupart du temps, ces deux solutions produiront exactement le même horodatage Unix . La différence entre ceux-ci est que $_SERVER['REQUEST_TIME']renvoie l'horodatage de la dernière demande de serveur et time()renvoie l'heure actuelle. Cela peut créer des différences de précision mineures selon votre application, mais dans la plupart des cas, ces deux solutions devraient suffire.

Sur la base de votre exemple de code ci-dessus, vous allez vouloir formater ces informations une fois que vous aurez obtenu l' horodatage Unix . Le temps Unix non formaté ressemble à:1232659628

Donc, pour obtenir quelque chose qui fonctionne, vous pouvez utiliser la date()fonction pour le formater.

Une bonne référence pour les façons d'utiliser la date()fonction se trouve dans le manuel PHP .

Par exemple, le code suivant renvoie une date qui ressemble à ceci 01/22/2009 04:35:00 pm::

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

Comment les différents serveurs Web gèrent-ils $_SERVER['REQUEST_TIME'] ?
Pacerier

Meilleure réponse haut la main. Vous ajoutez même comment passer de l'horodatage UNIX à la date de la personne normale, ce qui est grandement apprécié
Kolob Canyon

45

La fonction date de PHP peut faire ce travail.

Date()

La description:

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

Renvoie une chaîne formatée en fonction de la chaîne de formatage donnée en utilisant l'horodatage entier donné ou l'heure actuelle si aucun horodatage n'est donné.

Exemples:

$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');

Mise à jour

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

Pour le format de date, la fonction PHP date () est utile.



25

Car le nouveau programmeur PHP pourrait confondre pourquoi il y a beaucoup de méthode pour obtenir la date et l'heure actuelles et laquelle utiliser dans leur projet.

1. dateméthode (PHP 4, PHP 5, PHP 7)

C'est la manière la plus courante et la plus simple d'obtenir la date et l'heure 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));

Vous pouvez en savoir plus à ce sujet ici

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

lorsque vous souhaitez utiliser PHP avec OOP, c'est le meilleur moyen d'obtenir la date et l'heure.

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

Vous pouvez en savoir plus à ce sujet ici

3. Paquet de temps de date de carbone

si vous utilisez Composer , Laravel , Symfony ou tout autre framework, c'est la meilleure façon d'obtenir la date et l'heure. De plus, ce package étend la classe DateTime en php afin que vous utilisiez toutes les méthodes de la classe Datetime. Ces cadres intégrés comme laravel vous n'avez donc pas à l'installer séparément.

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'

Vous pouvez en savoir plus à ce sujet ici

J'espère que cela vous aide et si vous connaissez un autre moyen d'obtenir la date et l'heure, n'hésitez pas à modifier la réponse.


J'ai aimé d'autres réponses qui montrent comment formater la chaîne même avec du texte personnalisé, ou disons quel format est le meilleur pour MySQL, etc., mais j'accepterais certainement celui-ci pour afficher les trois types et usages: procédural, orienté objet et cadre OOP .
S3C

1
@ s3c J'aurais pu répondre à quelque chose comme ça, mais la question est "Comment puis-je obtenir la date et l'heure actuelles en PHP?", notre objectif principal devrait être la question. :)
Supun Praneeth

21

Utilisation:

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

Ça marche.


Ce que je veux dire, c'est que le temps revient HNE quand je suis PST ... mais pourquoi? Est-ce l'heure du serveur et le serveur est EST? Puis-je faire gagner du temps aux utilisateurs? Leur serveur peut être un autre fuseau horaire, non?

La fonction date est l'heure de votre serveur, vérifiez-la ou définissez-la temporairement / w PHP avant d'exécuter la date.
TravisO

merci, mon service ne doit pas être à jour avec php car O fonctionne pour GMT mais pas pour le fuseau horaire P ou "e" ... merci !!

Ce $ date = date ('m / d / Y h: i: s a', time ()); obtient la date du serveur mais ne me donne toujours pas la date de l'utilisateur. Cela me montre à EST quand je suis à PST. Je veux obtenir la date à laquelle l'utilisateur envoie le formulaire et comme moi, son serveur peut être dans un fuseau horaire différent.

En fait, maintenant que j'y pense, l'heure n'est pas aussi importante que la date. MERCI À TOUS!!

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

Ce code obtiendra la date et l'heure du serveur sur lequel le code s'exécute.


1
A voté pour une réponse trompeuse. Non, il n'obtiendra pas l'heure de votre machine locale, sauf si vous exécutez également le serveur localement. Il obtiendra la date et l'heure du serveur.
MattWithoos

@MattWithoos - "Ce code obtiendra la date et l'heure du" serveur ", il n'a rien dit sur la" machine locale "que vous avez dit. Vous n'avez pas non plus besoin d'exécuter votre serveur" local "- vous pouvez avoir un serveur n'importe où dans le monde réglé sur le fuseau horaire de votre choix. Votre vote négatif était complètement faux et sans aucune raison
Neal Davis

1
@NealDavis Avez-vous pensé à regarder l'édition? J'ai posté ce commentaire, suggéré une modification des informations incorrectes et, en attendant, j'ai attendu qu'il soit approuvé. Maintenant, il est approuvé et affiche les informations correctes.
MattWithoos

1
@NealDavis De plus, si vous avez pris la peine de lire le message d'origine, il était littéralement dit "Ce code obtiendra la date et l'heure de votre ordinateur local (PC)". C'est tout à fait trompeur.
MattWithoos

16

Vous pouvez également utiliser ce format:

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

Ou

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

14

Selon l'article Comment obtenir l'heure actuelle (NOW) avec PHP , il existe deux façons courantes d'obtenir la date actuelle. Pour obtenir le datetime actuel (maintenant) avec PHP, vous pouvez utiliser la dateclasse avec n'importe quelle version de PHP, ou mieux la datetimeclasse avec PHP> = 5.2.

Diverses expressions de format de date sont disponibles ici.

Exemple utilisant la date

Cette expression renverra MAINTENANT au format Y-m-d H:i:s.

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

Exemple d'utilisation de la classe datetime

Cette expression renverra MAINTENANT au format 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>";
?>

Impressions comme celle-ci

Dimanche 9 décembre 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

Définissez votre fuseau horaire:

date_default_timezone_set('Asia/Calcutta');

Appelez ensuite les fonctions de date

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

11
date(format, timestamp)

La datefonction renvoie une chaîne formatée selon la chaîne de formatage donnée en utilisant l'horodatage entier donné ou l'heure actuelle si aucun horodatage n'est donné. En d'autres termes, il timestampest facultatif et correspond par défaut à la valeur de time ().

Et les paramètres sont -

format - Obligatoire. Spécifie le format de l'horodatage

timestamp - (Facultatif) Spécifie un horodatage. La valeur par défaut est la date et l'heure actuelles

Comment obtenir une date simple

Le paramètre de format requis de la date()fonction spécifie comment formater le date (or time).

Voici quelques caractères couramment utilisés pour les dates:

  1. d - Représente le jour du mois (01 au 31)
  2. m - Représente un mois (01 à 12)
  3. Y - Représente une année (en quatre chiffres)
  4. l ('L' minuscule) - Représente le jour de la semaine

D'autres caractères, comme, "/", ".", or "-"peuvent également être insérés entre les caractères pour ajouter une mise en forme supplémentaire.

L'exemple ci-dessous met en forme la date d'aujourd'hui de trois manières différentes:

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

Quelques liens utiles


10

Si vous souhaitez une échelle de temps différente, veuillez utiliser:

$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'entendez-vous par "échelle de temps"?
Peter Mortensen

"fuseau horaire", probablement.
Saneem

2
Je crois que @Jaymin peut signifier si vous voulez ajuster l'heure à venir un jour, un mois en arrière, etc.
Just Plain High

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

Le format de la date dépend aussi:

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

C'est difficilement compréhensible. Peux-tu élaborer?
Peter Mortensen

10

Vous pouvez utiliser ce code:

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

9

J'ai trouvé que le moyen le plus simple d'obtenir l'heure actuelle en PHP est quelque chose comme ça.

//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

Un autre moyen simple consiste à prendre l'horodatage de la date et de l'heure actuelles. Utilisez la fonction mktime () :

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

Ensuite, vous pouvez convertir cela en un autre format de date:

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

Plus de formats de date sont ici: 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 vous êtes bangladais, et si vous voulez connaître l'heure de Dacca, utilisez ceci:

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

6

Normalement, cette fonction de date est utile pour tout le monde: date ("Y / m / d");

Mais l'heure est quelque chose de différent, car la fonction d'heure dépend de la version PHP ou de la date du système.

Donc, utilisez-le probablement comme ceci pour obtenir notre propre fuseau horaire:

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

Cette fonction affiche le temps de 24 heures.


il a fixé la date à 1970 pour moi!
iKamy

5

Voici quelques personnages couramment utilisés:

  1. h - Format d'une heure de 12 heures avec des zéros en tête (01 à 12)
  2. i - Minutes avec zéros non significatifs (00 à 59)
  3. s - Secondes avec des zéros non significatifs (00 à 59)
  4. a - Ante meridiem minuscule et Post meridiem (matin ou après-midi)

Obtenez votre fuseau horaire

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

Vérifiez cela (facultatif)

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

Pour date

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

Voici quelques caractères couramment utilisés pour les dates:

  1. d - Représente le jour du mois (01 au 31)
  2. m - Représente un mois (01 à 12)
  3. Y - Représente une année (en quatre chiffres)
  4. l ('L' minuscule) - Représente le jour de la semaine

Source-W3-écoles


1
Quel est le but de la fuite .en date("Y/m/d") . ;?
Peter Mortensen

Pour concaténer une autre chaîne ou variable, je suppose. Merci pour vos retouches. :-)
Raheel Khan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.