PHP date() pour retourner au format aaaa-mm-jjthh:mm:ss.uZ
J'ai vérifié la suite de questions/réponses:
Comment puis-je obtenir le format “aaaa-MM-jjthh:mm:ss.fffZ” en php?
Les réponses inclure des liens vers la documentation de Microsoft pour le format des dates, mais elles ne fonctionnent pas dans PHP.
Le haut de réponse suggèrent
date('Y-m-dTH:i:s.uZ') //for the current time
Ce sorties
2013-03-22EDT12:56:35.000000-1440016
Fond
Je travaille avec une API qui nécessite un horodatage dans le format ci-dessus. L'API est basée au royaume-UNI (GMT) et mon serveur est en Australie (AEST).
L'exemple donné dans la documentation de l'API de demander la date dans ce format:
2011-07-15T16:10:45.555Z
Le plus proche que je peux obtenir à cette date('c') sorties:
2014-07-03T16:41:59+10:00//Notice the Z is replaced with a time diff in hours
Je crois que le " Z " se réfère à une Zone, mais il n'est pas mentionné dans la documentation de PHP.
Malheureusement quand je poste ce format, l'API est la lecture de l'heure et de la prise de 10 heures de repos. Je reçois un message d'erreur indiquant que la date ne peut pas être dans le passé (en tant que de contrôle, il est contre le, heure locale, à Melbourne, mais en voyant un temps de 10 heures plus tôt).
J'ai essayé de découper l'horodatage pour enlever le +1000 qui l'API accepte, mais le record est de montrer créé 10 heures plus tôt.
J'ai besoin de faire correspondre le timestamp nécessaire, mais je ne trouve aucun moyen de répliquer au-dessus de la sortie, en PHP pour Melbourne, en Australie. Toute aide est grandement appréciée.
Première question DONC, de sorte s'il vous plaît laissez-moi savoir comment je suis allé
date(DATE_ATOM);
?Salut Alex - la sortie est la même que la Date('c'); Testé tout à l'heure et a obtenu
2014-07-07T17:54:05+10:00
Si une solution n'est pas publié, peut-être que si vous savez l'API seront toujours garniture de 10 heures, un compromis serait d'ajouter un supplément de 10 heures pour le temps que vous envoyez? En effet, garder la trace de deux fois, le "réel", le temps, et celui qui répond à l'API.
OriginalL'auteur Patrick | 2014-07-07
Vous devez vous connecter pour publier un commentaire.
Z
représente le fuseau horaireUTC
et est défini dans ISO-8601, qui est votre format de sortie désiré, prolongée par l'ordre de la milliseconde.Avant de sortir le temps, vous aurez besoin de transférer de l'heure locale à l'UTC:
ensuite, vous pouvez utiliser le format suivant de la chaîne:
Note que j'ai mise à zéro de la milliseconde partie et échappe les caractères spéciaux
T
etZ
du format.2014-07-07T08:01:32+00:00
- je suis assez heureux que le fuseau horaire est réglé pour être correct pour l'Australie/Melbourne. C'est plus la sortie, y compris les millisecondes, plus le caractère Z. Je commence à penser que ce n'est pas une fonction PHP et que l'API est de demander quelque chose qui ne peut pas être livréOuais, je vous l'ai dit, c'est valable ISO-8601. Vous êtes libre de choisir entre
+00:00
ouZ
Hmm, votre question est difficile à lire. Vous venez devrait avoir ajouté le format de sortie souhaité. Btw, si l'API attend le
Z
cela signifie qu'il s'attend à des dates dans UTC, pas de Melbourne fuseau horaire. Avoir ce qu'il devrait être facile d'obtenir le résultat attendu .. deuxième ...Désolé, je pensais que le format de votre choix était clair dans le titre. Je vais mettre de l'avant et centre dans de futurs billets. Je crois que ce qui est à l'origine de ma question n'est pas de PHP, mais l'API. Ils sont de la validation contre l'Australie/Melbourne fuseau horaire, mais s'attendent GMT. Lorsque j'envoie GMT il est rejeté comme étant de 10 heures dans le passé. Lorsque j'envoie Australie/Melbourne, il est accepté et stockées à 10 heures en l'avenir.
Le suivant a travaillé pour créer un format acceptable pour l'API. 1.
$dt new DateTime()
. 2.$dt->format(DateTime::ISO8601)
. Ce sorties2014-07-08T09:18:01+1000
- avis le manque du côlon en une heure de décalage de l'heure UTC.date('c')
comprend le côlon. Ce n'est pas la réponse à ma question d'origine, mais il n'a régler mon problème.OriginalL'auteur hek2mgl