Date

Signaler
Messages postés
7
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
9 janvier 2010
-
Messages postés
7
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
9 janvier 2010
-
bonjour à tous
je sais convertir une date au format UNIX
exemple: $date = strftime("%d/%m/%Y %H:%M", $date);
mais pour le contraire comment faire?
si j'ai une date sous ce format:11/02/2009 10:30

$date= mktime();
ça coince entre les parentheses
merci de votre aide

9 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Si tu es avec PHP5, tu peux utiliser strptime(), qui est justement le contraire de strftime()
Sinon : REGEX !

--
Neige

N'hésitez pas à lire la doc
Messages postés
7
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
9 janvier 2010

Merci pour ta réponse mais apparemment
je suis pas en PHP5
Fatal error: Call to undefined function strptime()
Par contre le REGEX
je l'ai lu
j'ai trouvé ça bien pensé
mais je n'ai pas décchiffré grand chose
je n'ai pas encore le niveau pour me débrouiller seul

Si on peut m'aider merci
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
En fait, il y a (presque) plus simple : strtotime(). Mais si ta date est du genre dd/mm/yy, il faut transformer ça en mm/dd/yy pour que strtotime() l'interprète correctement.

$en_date = preg_replace('`([0-9]{2})/([0-9]{2})/(.*)`', '$2/$1/$3', $date);
if ($date !== $en_date) {
$time = strtotime($en_date);
}


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,


Plus simplement pourquoi pas ça :
<?php
preg_match_all('`\d{2,4}`', $date, $a);
$t = mktime(0, 0, 0, $a[0][1], $a[0][0], $a[0][2]);
?>


mais je n'ai pas décchiffré grand chose

Si tu as juste lu c'est bien normal
Les regex nécessitent pas mal d'apprentissage et de prise de tête avant de pouvoir en tirer pleinement parti (tout du moins pour moi)


Cordialement,

Kohntark -
NB : c'est une impression ou les balises "code" sont de plus en plus pourries ? Il n'y a même plus de coloration syntaxique ? ... arf, je viens de constater que les tags <?php sont obligatoires pour ça à quoi bon préciser un langage alors ?
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Oups, j'ai omis l'heure :
<?php
$t = mktime($a[0][3], $a[0][4], 0, $a[0][1], $a[0][0], $a[0][2]);
?>




Kohntark -
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Il faut quand même vérifier que preg_match_all rencontre des résultats...

Sinon, c'est marrant, pour la balise code, je m'étais déjà fait la même remarque... En fait, je l'ai même faite à un admin en utilisant le formulaire de contact. Déjà, depuis mon message, j'ai constaté que l'affichage du code ne supprimait plus les majuscules !

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Il faut quand même vérifier que preg_match_all rencontre des résultats...

Bien sur. Je ne faisais que proposer une solution utilisant le mktime cité initialement.
Reste à voir si le test est réellement nécessaire (quelle est la provenance de cette date Vistel ??)

Je trouvais cette solution plus simple et je pensais qu'elle était plus rapide en terme d'exécution, hors ce n'est pas le cas.
Pour ma culture personnelle j'ai fait un test rapide :
(sur 500000 itérations)
mon code : 16.00 s
ton code : 15.3 s

Inutile de dire que nous ne sommes même plus dans le domaine du négligeable et que le choix de l'une ou l'autre solution portera sur d'autres critères.
Mais tout de même j'ai été étonné, j'aurais parié que l'emploi de preg_match et mktime était sensiblement plus rapide que ta solution. Je n'ai pas prit le temps de tester quelle était la fonction consommatrice (ou la regex)

j'ai constaté que l'affichage du code ne supprimait plus les majuscules !

Je l'ai constaté également, ... il était temps
Vivement la possibilité d'indenter, d'ouvrir un nouvel onglet via tab+T, une coloration syntaxique plus élaborée, des liens automatiques vers la doc pour les fonctions, un correcteur de code, un troll bot killer, une nana à poil lors d'une réponse validée ... ok je sors

Cordialement,


Kohntark -
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
PTDR

Sinon, pour mon code, s'il est plus rapide, c'est que la regex que j'utilise est plus précise que la tienne, et donc elle demande moins de traitement. Par ailleurs, mais là ce ne sont que des spéculations, j'imagine que tant que la regex a déterminé les motifs qui correspondaient, elle en profite pour faire le remplacement, le tout, avec la même optimisation grâce à la PCRE.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
7
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
9 janvier 2010

Merci à toutes les personnes qui se sont penchés sur mon problême
je suis parvenu grace à votre aide à résoudre celui ci
Encore merci et désolé de n'avoir pas pu vous remercier avant.

Le but final était :

je voulais que si quelqun édite un message sur mon site pouvoir le faire remonter à la date du jour en updatant le champ date à la date du jour
(un up à l'italienne quoi )