Transformer un champ time and date avec php

Eléphant du PHP | 116 Messages

16 avr. 2010, 12:43

Bonjour, question de noob :

Jusqu'à present j'utilisai des champs varchar pour stocker mes dates (oué je sais pas top).
Mais j'aimerai mieux comprendre comment faire une opération sur une date pour m'améliorer.

Dans votre tuto sur les opérations sur les dates.
list($annee, $mois, $jour) = explode("-", $dateSQL); 
$dateFR = $jour.'/'.$mois.'/'.$annee;
J'ai voulu utilisé cela pour un format Y-m-d H:m:s
list($date, $heure) = explode(" ", $Check_time); // ligne 76
list($annee, $mois, $jour) = explode("-", $date); // ligne 77
$Check_time = $jour.'/'.$mois.'/'.$annee.' '.$heure;
et j'obtiens une erreur :

Code : Tout sélectionner

Notice: Undefined offset: 1 in D:\Program Files\wamp\www\vini\8464622\includes\test.php on line 76 Notice: Undefined offset: 2 in D:\Program Files\wamp\www\vini\8464622\includes\test.php on line 77
Ou est l'erreur

ViPHP
ViPHP | 1996 Messages

16 avr. 2010, 13:47

Cela veutn dire que $Check_time n'a pas de "colonne" 1 et que $date n'a pas de "colonne" 2.

Si on prend la ligne 76 :
list($date, $heure) = explode(" ", $Check_time);  // ligne 76
la pseudofonction list (pseudo car ce n'est pas une fonction réelle) prend le tableau créé par explode qui est lui même créé par la "string" $check_time.
Aussi pour que list fonctionne, il faut que $check_time soit écris ainsi :
2010-04-15 13:45
Est ce le cas ?
Si oui essaye de "trim" ta variable avant. Trim retire les espaces avant et après la variable :
list($date, $heure) = explode(" ", trim($Check_time));  // ligne 76
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 5462 Messages

16 avr. 2010, 14:26

t'embête pas utilise strtotime

Eléphant du PHP | 116 Messages

16 avr. 2010, 14:33

Alors $Check_time est de cette forme la :
$Check_time = "2010-04-16 17:25:29";
Si je rajoute trim(), ca ne change rien.
Notice: Undefined offset

Perso bon c'est pas très claire pour moi strtotime.
J'ai copié un exemple donné dans le manuel
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
echo strtotime("2010-04-16 17:25:29"), "\n";

// Affiche 1271420999 968544000 1271507399 1272025799 1272213001 1271894400 1271030400 1271438729
?>
J'ai pu lire
strtotime() essaye de lire une date au format anglais US dans la chaîne time, et de la transformer en timestamp Unix (le nombre de secondes depuis le 1er Janvier 1970 à 00:00:00 UTC), relativement au timestamp now, ou à la date courante si ce dernier est omis
En gros elle ma transformé en seconde ma date, il faut maintenant la re-transformé le résultat pour obtenir une date au format francais c'est bien ca?

ViPHP
ViPHP | 5462 Messages

16 avr. 2010, 14:39

oui, ca te crées ton timstamp
a toi apres de la mettre en parametre dans la fonction date ou strftime

Eléphant du PHP | 116 Messages

16 avr. 2010, 14:47

Merci Stealth

Ca donne ceci, et problème reglé !
$Check_time = date('d/m/Y H:i:s',strtotime($Check_time));