J'ai un système multi national qui utilise deux types de formats de date différents. L'un utilise "d-m-Y" l'autre utilise "m-d-Y". J'ai une classe locale qui est responsable de la création d'un objet DateTime basé sur une chaîne de date passée dans celui-ci.Constructeur PHP DateTime - format de chaîne de date basé sur DateTimeZone
La chaîne transmise est dynamique et peut être l'une ou l'autre version. Le problème est que même si vous spécifiez DateTimeZone dans le constructeur DateTime, vous devez toujours passer une chaîne basée sur 'm-d-y'.
Je dois être en mesure de transmettre une chaîne au constructeur DateTime en fonction de la DateTimeZone transmise avec elle. Par exemple, si mon TimeZone est défini sur Australia/Sydney , le constructeur DateTime doit accepter une chaîne du type '31/11/2017 ', mais ce n'est pas le cas. Le constructeur DateTime ne prend pas en compte le TimeZone passé avec la chaîne. Je devrais utiliser DateTime :: createFromFormat, mais cela signifie que je devrais spécifier manuellement un format pour des centaines de fuseaux horaires. Il serait beaucoup plus facile si le constructeur DateTime prendrait un format de chaîne en fonction du fuseau horaire passé dans comme ça ...
$dateTime = new DateTime('31/11/2017', new DateTimeZone('Australia/Sydney'))
Cela devrait fonctionner, mais ne fonctionne pas dans mon cas. Est-ce que quelqu'un sait ce que je fais mal? Il doit y avoir un moyen d'y parvenir.
Utilisez le format d'horodatage à la place – OPV