10
votes

Chaîne de date d'analyse PHP

Si j'ai une chaîne de date: xxx

et je souhaite séparer chaque partie de la date: xxx

Comment Serais-je le faire?

Y a-t-il une fonction de date spéciale que je devrais utiliser? Ou quelque chose d'autre?

merci!


0 commentaires

8 Réponses :


14
votes

exploser code> fera le tour pour cela:

list($m, $d, $y) = explode("/", $date);


1 commentaires

Liste ($ m, $ d, $ y) = exploser ("/", date $ DATE);



18
votes

Une solution serait de faire ceci: xxx


2 commentaires

Ah, mais votre réponse est plus robuste.


Strotime ne fonctionne pas toujours à cause de la contrainte d'horodatage. Dites que vous voulez analyser la Première Guerre mondiale, vous ne pouvez pas convertir le 28/08/1914 en un horodatage valide.



2
votes

Est-ce toujours comme ça? Ou sera-t-il dans n'importe quelle sorte de format de fichier?

essayez strtotime.

quelque chose comme: xxx


0 commentaires

-3
votes

La réponse de Dominic est bonne, mais si la date est toujours dans le même format que vous pouvez utiliser ceci: xxx

et non doivent utiliser un tableau ou exploser

Bill H


1 commentaires

Pourquoi voudrait-on éviter d'exploser? si la date est toujours dans le même format, explosion fonctionnera parfaitement, et comme @gido implique, sera auto-documentant en termes d'intention. Si on veut éviter le tableau, alors list les éléments sur des variables distinctes.



1
votes

Que diriez-vous:

list($m, $d, $y) = explode("/", $date);


0 commentaires

5
votes

Consultez PHP's Fonction Date_Parse . Sauf si vous êtes sûr que l'entrée sera toujours dans un format cohérent et que vous le validez d'abord, il est beaucoup plus stable et flexible, (sans trop mentionner), de laisser PHP essayer d'analyser le format pour vous.

E.g. xxx


0 commentaires

4
votes

Si vous avez un format donné, vous devez utiliser un date objet .

$newFormat = $date->format('d-m-Y');


0 commentaires

0
votes

Pour une date d'analyse de la date internationalisée, voir IntlateFormatter :: parse - http://php.net /manual/fr/intldateformatter.parse.php

Par exemple: P>

$f = new \IntlDateFormatter('en_gb', \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE);
$dt = new \DateTime();
$dt->setTimestamp($f->parse('1/2/2015'));


0 commentaires