Date

cs_vistel Messages postés 7 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 9 janvier 2010 - 18 oct. 2009 à 00:47
cs_vistel Messages postés 7 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 9 janvier 2010 - 9 janv. 2010 à 12:21
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
18 oct. 2009 à 00:54
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
0
cs_vistel Messages postés 7 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 9 janvier 2010
18 oct. 2009 à 01:19
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
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
18 oct. 2009 à 01:39
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à ;)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 oct. 2009 à 15:06
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 oct. 2009 à 15:10
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 -
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
18 oct. 2009 à 15:13
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à ;)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 oct. 2009 à 16:39
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 -
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
18 oct. 2009 à 20:52
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à ;)
0
cs_vistel Messages postés 7 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 9 janvier 2010
9 janv. 2010 à 12:21
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 )
0
Rejoignez-nous