Comment obtenir l'horodatage UTC/GMT +/- en utilisant la fonction date () de PHP? Par exemple, si j'essaye
date("Y-m-d H:i:s", time());
Je vais obtenir un horodatage Unix; mais je dois obtenir un horodatage UTC/GMT avec la chaîne GMT/UTC +/- 0400 ou GMT/UTC +/- 1000 en fonction du minutage local.
Utiliser gmdate
renverra toujours une date GMT. La syntaxe est la même que pour date
.
Un simple gmdate () suffira
<?php
print gmdate("Y-m-d\TH:i:s\Z");
Comme précédemment répondu ici , depuis PHP 5.2.0, vous pouvez utiliser la classe DateTime
et spécifier le fuseau horaire UTC avec une instance de DateTimeZone
.
Le DateTime documentation __ construct () suggère de passer "maintenant" comme premier paramètre lors de la création d'une instance DateTime et de la spécification d'un fuseau horaire pour obtenir l'heure actuelle.
$date_utc = new \DateTime("now", new \DateTimeZone("UTC"));
echo $date_utc->format(\DateTime::RFC850); # Saturday, 18-Apr-15 03:23:46 UTC
$time = time();
$check = $time+date("Z",$time);
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $check);
date("Y-m-d H:i:s", time() - date("Z"))
En plus d'appeler gmdate
, vous pouvez également mettre ce code avant votre reste de code:
<?php
date_default_timezone_set("UTC");
?>
Cela fera reposer vos appels liés à la date/heure pour utiliser le fuseau horaire GMT/UTC.
Obtention de la date UTC
gmdate("Y-m-d H:i:s");
Obtention de l'horodatage UTC
time();
Le résultat ne sera pas différent même si vous avez date_default_timezone_set
sur votre code.
Vous pouvez utiliser la fonction gmmktime sans arguments pour obtenir l’horodatage UTC actuel:
$time = gmmktime();
echo date("Y-m-d H:i:s", $time);
gmmktime ne fonctionnera que si l'heure de votre serveur utilise l'heure UTC. Par exemple, mon serveur est défini sur US/Pacific. la fonction énumérée ci-dessus renvoie à l'heure du Pacifique.
avec la chaîne GMT/UTC +/- 0400 ou GMT/UTC +/- 1000 basé sur les horaires locaux
Votre fichier personnalisé format manque tout simplement O
pour vous indiquer les décalages de fuseau horaire par rapport à l'heure locale.
Différence en heures avec l'heure de Greenwich (GMT) Exemple: +0200
date_default_timezone_set('America/La_Paz');
echo date('Y-m-d H:i:s O');
2018-01-12 12:10:11 -0400
Cependant, pour une portabilité/interopérabilité optimisée, je vous recommanderais d'utiliser le format de date ISO8601c
date_default_timezone_set('America/La_Paz');
echo date('c');
2018-01-12T12: 10: 11-04: 00
date_default_timezone_set('Australia/Brisbane');
echo date('c');
2018-01-13T02: 10: 11 + 10: 00
Vous pouvez également utiliser gmdate
et la chaîne de décalage du fuseau horaire sera toujours +00:00
date_default_timezone_set('America/La_Paz');
echo gmdate('c');
2018-01-12T16: 10: 11 + 00: 00
date_default_timezone_set('Australia/Brisbane');
echo gmdate('c');
2018-01-12T16: 10: 11 + 00: 00
Vous pouvez utiliser ce qui suit pour obtenir l'heure UTC:
date_default_timezone_set('Asia/Calcutta');
$current_date = date("Y/m/d g:i A");
$ist_date = DateTime::createFromFormat(
'"Y/m/d g:i A"',
$current_date,
new DateTimeZone('Asia/Calcutta')
);
$utc_date = clone $ist_date;
$utc_date->setTimeZone(new DateTimeZone('UTC'));
echo 'UTC: ' . $utc_date->format('Y-m-d g:i A');
/**
* Converts a local Unix timestamp to GMT
*
* @param int Unix timestamp
* @return int
*/
function local_to_gmt($time = '')
{
if ($time === '')
{
$time = time();
}
return mktime(
gmdate('G', $time),
gmdate('i', $time),
gmdate('s', $time),
gmdate('n', $time),
gmdate('j', $time),
gmdate('Y', $time)
);
}