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:
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.
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 =newDateTime();
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 =newDateTime(null,newDateTimeZone('America/New_York'));
$now->setTimezone(newDateTimeZone('Europe/London'));// Another way
echo $now->getTimezone();
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.
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)
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::
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)
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));
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 =newDateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP')."\n";// Specified date/time in the specified time zone.
$date =newDateTime('2000-01-01',newDateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP')."\n";// Current date/time in your computer's time zone.
$date =newDateTime();
echo $date->format('Y-m-d H:i:sP')."\n";// Current date/time in the specified time zone.
$date =newDateTime(null,newDateTimeZone('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 =newDateTime('@946684800');
echo $date->format('Y-m-d H:i:sP')."\n";// Non-existent values roll over.
$date =newDateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP')."\n";?>
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'
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. :)
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.
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.
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
// 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)?>
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:
d - Représente le jour du mois (01 au 31)
m - Représente un mois (01 à 12)
Y - Représente une année (en quatre chiffres)
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");?>
// 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));
$date = date('m/d/Y h:i:s a', time());
Réponses:
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_set
avant d' appeler les fonctionsdate()
outime()
.Je suis à Melbourne, en Australie, donc j'ai quelque chose comme ça:
Ou un autre exemple est LA - US :
Vous pouvez également voir dans quel fuseau horaire le serveur se trouve actuellement via:
Donc quelque chose comme:
La réponse courte à votre question serait donc:
Ensuite, tout le temps serait au fuseau horaire que vous venez de définir :)
la source
Pour une référence de fuseau horaire, voir Liste des fuseaux horaires pris en charge .
la source
Depuis PHP,
5.2.0
vous pouvez utiliser laDateTime()
classe:Et pour préciser
timezone
:la source
Datatime
espace 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.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
la source
Le temps de PHP () renvoie un horodatage Unix actuel. Avec cela, vous pouvez utiliser la fonction date () pour le formater à vos besoins.
Comme Paolo l'a mentionné dans les commentaires, le deuxième argument est redondant. L'extrait de code suivant est équivalent à celui ci-dessus:
la source
Vous pouvez soit utiliser la
$_SERVER['REQUEST_TIME']
variable (disponible depuis PHP 5.1.0) ou latime()
fonction pour obtenir l'horodatage Unix actuel.la source
time()
fonction est indépendant du fuseau horaire. (Donc, appelerdate_default_timezone_set("your-particular-timezone");
avant n'aura aucun effet.)Vous pouvez utiliser à la fois la
$_SERVER['REQUEST_TIME']
variable ou latime()
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 ettime()
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
::la source
$_SERVER['REQUEST_TIME']
?La fonction date de PHP peut faire ce travail.
Date()
La description:
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:
la source
Mise à jour
Pour le format de date, la fonction PHP date () est utile.
la source
la source
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.
date
mé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.
Vous pouvez en savoir plus à ce sujet ici
2.
DateTime
classe (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.
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.
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.
la source
Utilisation:
Ça marche.
la source
Ce code obtiendra la date et l'heure du serveur sur lequel le code s'exécute.
la source
Vous pouvez également utiliser ce format:
Ou
la source
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
date
classe avec n'importe quelle version de PHP, ou mieux ladatetime
classe 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
.Exemple d'utilisation de la classe datetime
Cette expression renverra MAINTENANT au format
Y-m-d H:i:s
.la source
Impressions comme celle-ci
Dimanche 9 décembre 2012
la source
la source
Définissez votre fuseau horaire:
Appelez ensuite les fonctions de date
la source
La
date
fonction 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, iltimestamp
est facultatif et correspond par défaut à la valeur de time ().Et les paramètres sont -
Comment obtenir une date simple
Le paramètre de format requis de la
date()
fonction spécifie comment formater ledate (or time)
.Voici quelques caractères couramment utilisés pour les dates:
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:
Quelques liens utiles
la source
Si vous souhaitez une échelle de temps différente, veuillez utiliser:
la source
la source
Le format de la date dépend aussi:
la source
Vous pouvez utiliser ce code:
la source
J'ai trouvé que le moyen le plus simple d'obtenir l'heure actuelle en PHP est quelque chose comme ça.
la source
Un autre moyen simple consiste à prendre l'horodatage de la date et de l'heure actuelles. Utilisez la fonction mktime () :
Ensuite, vous pouvez convertir cela en un autre format de date:
Plus de formats de date sont ici: http://php.net/manual/en/function.date.php
la source
Très simple
la source
la source
Si vous êtes bangladais, et si vous voulez connaître l'heure de Dacca, utilisez ceci:
la source
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:
Cette fonction affiche le temps de 24 heures.
la source
Voici quelques personnages couramment utilisés:
a - Ante meridiem minuscule et Post meridiem (matin ou après-midi)
Obtenez votre fuseau horaire
Vérifiez cela (facultatif)
Pour date
Voici quelques caractères couramment utilisés pour les dates:
Source-W3-écoles
la source
.
endate("Y/m/d") . ;
?