J'ai un travail cron WordPress qui envoie un e-mail périodiquement et enregistre l'horodatage lorsqu'il a été envoyé en option, et je voudrais afficher une date sur une page de paramètres. Quelque chose comme, "Le dernier e-mail a été envoyé le 'x'". Je suis sur la côte ouest des États-Unis, donc notre temps est actuellement de sept heures hors UTC.
Ma sortie attendue de date_i18n (), en lui passant l'horodatage, serait une date formatée localement avec un ajustement de sept heures à partir d'UTC. Cependant, il renvoie l'heure en UTC. Même essayer d'obtenir l'heure actuelle ne renvoie pas ce que je pense être la sortie attendue.
Par exemple: echo date_i18n('F d, Y H:i');
sorties 05 avril 2013 11:36 comme prévu, mais echo date_i18n('F d, Y H:i',time());
sorties 05 avril 2013 18:36.
Est-ce intentionnel? Comment puis-je renvoyer une date formatée localement à partir d'un horodatage préexistant? Merci pour toute aide.
Réponses:
Je sais que j'ai trois mois de retard, mais la fonction que vous voulez ici est WordPress '
get_date_from_gmt()
.La fonction accepte une date GMT / UTC au
Y-m-d H:i:s
format comme premier paramètre et le format de date souhaité comme deuxième paramètre. Il convertira votre date en fuseau horaire local comme défini sur l'écran Paramètres.Exemple d'utilisation:
echo get_date_from_gmt( date( 'Y-m-d H:i:s', $my_unix_timestamp ), 'F j, Y H:i:s' );
la source
echo get_date_from_gmt ( date( 'Y-m-d H:i:s', $my_timestamp ), get_option('date_format') . ' - '. get_option('time_format') );
Du codex :
Essaye ça:
Cela définit la date PHP par défaut sur l'option timezone_string de WP, si disponible, pour la durée du script.
la source
date_i18n('F d, Y H:i', $your_timestamp)
fonctionne pas?echo date_i18n('F d, Y H:i',1365194723)
déclaration en haut de index.php, qui me donne l'heure UTC plutôt que l'heure de la côte ouest des États-Unis.date_i18n($format, $timestamp)
formats selon les paramètres régionaux, mais pas le fuseau horaire.get_date_from_gmt($datestring, $format)
formats selon le fuseau horaire, mais pas les paramètres régionaux. Pour obtenir le formatage en fonction du fuseau horaire et des paramètres régionaux, je fais ce qui suit:Exemple de programme:
Sortie pour le fuseau horaire de Los Angeles:
Les références:
DateTimeZone
documents dans php.netDateTime
documents dans php.net, y comprissetTimestamp
,getTimestamp
etformat
date_i18n
docsla source
Ajoutez un décalage de fuseau horaire à votre horodatage.
ou mieux;
la source
Conversion UTC en chaîne dans le fuseau horaire, la langue et le format dans les options de WordPress
J'ai créé une fonction bien documentée qui convertit une chaîne date-heure en UTC en une jolie chaîne date-heure dans la langue, le format et le fuseau horaire corrects. N'hésitez pas à le copier.
Par exemple, passer
"2019-05-30 18:06:01"
(en UTC) reviendrait"Maggio 30, 2019 10:06 am"
.Les références:
get_date_from_gmt
docsDateTimeZone
documents dans php.netDateTime
documents dans php.net, y comprisgetTimestamp
date_i18n
docsdate_default_timezone_set( 'UTC' );
quel que soit le fuseau horaire sélectionné par l'administrateur dans l'interface utilisateur, alors gardez cela à l'esprit lors de la détermination du comportement des fonctions PHP intégrées. Voir lesdate_default_timezone_set
documents sur php.net.la source
C'est ce qui semble fonctionner sur ma machine (aucune des autres choses n'a fonctionné):
Code d'origine: https://www.simonholywell.com/post/2013/12/convert-utc-to-local-time/
Il n'utilise pas
date_l18n()
mais je suppose qu'on pourrait l'utiliser plus tard ...la source