9
votes

PHP - Date de format ISO8601?

J'ai un an (2002) et j'essaie de l'obtenir dans le format suivant:

2002-00-00T00: 00: 00

J'ai essayé diverses itérations, le dernier de qui était ceci: xxx

mais, même si je suis proche, il semble toujours ajouter +00: 00 à la fin de celui-ci ...


0 commentaires

4 Réponses :


17
votes

Le format 'c' en PHP ajoute toujours le décalage de la tempone. Vous ne pouvez pas éviter cela. Mais vous pouvez construire la date à vous-même des composants:

date('Y-m-d\TH:i:s', $testdate);


3 commentaires

Je semble toujours rendre les choses plus compliquées que nécessaire ... merci!


OMG! Je cherchais ça depuis longtemps. J'ai compris la partie "C", mais je ne savais pas que je devais échapper à la T. J'ai gardé le fuseau horaire pour T. whew! Merci.


Gmdate ('Y-M-D \ TH: I: S \ Z', Date de $)



1
votes
date('Y-m-d\TH:i:s\Z', time() - date('Z'));

2 commentaires

élaborer plus pour une meilleure explication


Merci pour ce code Snippet, qui pourrait fournir une aide limitée à court terme. Une explication appropriée améliorerait considérablement sa valeur à long terme en montrant pourquoi c'est une bonne solution à la problème et le rendrait plus utile aux futurs lecteurs avec d'autres questions similaires. S'il vous plaît Modifier Votre réponse Pour ajouter une explication, y compris les hypothèses que vous avez apportées.



3
votes

Le meilleur moyen est d'utiliser des constantes (PHP 5> = 5.5.0, PHP 7)

date(DATE_ISO8601, $timeToChange);


2 commentaires

Date_iso8601 ajoute également le +00: 00 TimeZone Bit OP tente d'éviter. Exemple: date d'écho (date_iso8601, 1612308970); // Imprimés "2021-02-02T23: 36: 10 + 0000"


Créez une nouvelle constante et utilisez-la comme dans l'exemple car cela devrait être réutilisable et facile à lire - selon le lien que j'ai envoyé. Définir ("date_iso8601_without_time", "Y-M-D \ TH: I: S"); date (date_iso8601_without_time, $ Timeochange);



3
votes

Le problème de plusieurs reprises se produit avec les millisecondes et les microsecondes finales que plusieurs fois sont dans 4 ou 8 finales. Convertir la date à la date ISO 8601 "DATE ​​(date_iso8601)" Ce sont l'une des solutions qui fonctionne pour moi: xxx

Précédent Publié: https://stackoverflow.com/a/61796705/5898408


0 commentaires