scripts pour la gestion des dates
12 messages
• Page 1 sur 1
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
scripts pour la gestion des dates
salut !
connaissez vous / conseillez vous / déconseiller vous des scripts pour la gestion de dates ?
(comparaison de dates, soustraction de dates, soustraction d'année, de mois, de jours, etc..)
je n'en connais aucun et avant de m'aventurer dans la jungle que me proposera google je fais appel à votre expérience et vos connaissance.
merci
connaissez vous / conseillez vous / déconseiller vous des scripts pour la gestion de dates ?
(comparaison de dates, soustraction de dates, soustraction d'année, de mois, de jours, etc..)
je n'en connais aucun et avant de m'aventurer dans la jungle que me proposera google je fais appel à votre expérience et vos connaissance.
merci
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
en fait en php, il n'existe aucune fonction permettant de faire une comparaison entre deux dates, par exemple, ou de soustraire une date à une autre simplement, ou encore pour un dernier exemple, ajouter/déduire un certain temps donnée qui peut être en ANNEE, MOIS, JOUR, MINUTE, etc.. à une date.
c'est plus clair ?
c'est plus clair ?
-

narayana - WRInaute impliqué

- Messages: 835
- Inscription: 28 Jan 2005
Ouep
en voilà une qui fait bien son boulot
en voilà une qui fait bien son boulot
- Code: Tout sélectionner
/*
$interval can be:
yyyy - Number of full years
q - Number of full quarters
m - Number of full months
y - Difference between day numbers
(eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".)
d - Number of full days
w - Number of full weekdays
ww - Number of full weeks
h - Number of full hours
n - Number of full minutes
s - Number of full seconds (default)
*/
function datediff($interval, $datefrom, $dateto, $using_timestamps = false)
{
if (!$using_timestamps) {
$datefrom = strtotime($datefrom, 0);
$dateto = strtotime($dateto, 0);
}
$difference = $dateto - $datefrom; // Difference in seconds
switch($interval) {
case 'yyyy': // Number of full years
$years_difference = floor($difference / 31536000);
if (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom)+$years_difference) > $dateto) {
$years_difference--;
}
if (mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto)-($years_difference+1)) > $datefrom) {
$years_difference++;
}
$datediff = $years_difference;
break;
case "q": // Number of full quarters
$quarters_difference = floor($difference / 8035200);
while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($quarters_difference*3), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
$months_difference++;
}
$quarters_difference--;
$datediff = $quarters_difference;
break;
case "m": // Number of full months
$months_difference = floor($difference / 2678400);
while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
$months_difference++;
}
$months_difference--;
$datediff = $months_difference;
break;
case 'y': // Difference between day numbers
$datediff = date("z", $dateto) - date("z", $datefrom);
break;
case "d": // Number of full days
$datediff = floor($difference / 86400);
break;
case "w": // Number of full weekdays
$days_difference = floor($difference / 86400);
$weeks_difference = floor($days_difference / 7); // Complete weeks
$first_day = date("w", $datefrom);
$days_remainder = floor($days_difference % 7);
$odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?
if ($odd_days > 7) { // Sunday
$days_remainder--;
}
if ($odd_days > 6) { // Saturday
$days_remainder--;
}
$datediff = ($weeks_difference * 5) + $days_remainder;
break;
case "ww": // Number of full weeks
$datediff = floor($difference / 604800);
break;
case "h": // Number of full hours
$datediff = floor($difference / 3600);
break;
case "n": // Number of full minutes
$datediff = floor($difference / 60);
break;
default: // Number of full seconds (default)
$datediff = $difference;
break;
}
return $datediff;
}
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
waouh! je ne dis pas non. ( je galère un peu avec ces dates
)
une question : quel est la façon la plus facile de gérer le fuseau horaire ?
parce qu'il existe plusieurs solutions, dont celle auxquels je pense :
- changer le fuseau horaire par défaut en fonction de l'internaute et ces paramètre si connu avec la fonction : date_default_timezone_set()
=> ça semble le plus simple, mais je ne sais pas si les date d'une base de données seront automatique convertie en fonction du fuseau horaire, peut être que quelqu'un peu me donner la réponse
sinon pour chaque date afficher prendre le fuseau horaire de l'internaute et soustraire ou ajouter à chaque fois le temps de différence..
c'est un truc de fou quand même
une question : quel est la façon la plus facile de gérer le fuseau horaire ?
parce qu'il existe plusieurs solutions, dont celle auxquels je pense :
- changer le fuseau horaire par défaut en fonction de l'internaute et ces paramètre si connu avec la fonction : date_default_timezone_set()
=> ça semble le plus simple, mais je ne sais pas si les date d'une base de données seront automatique convertie en fonction du fuseau horaire, peut être que quelqu'un peu me donner la réponse
sinon pour chaque date afficher prendre le fuseau horaire de l'internaute et soustraire ou ajouter à chaque fois le temps de différence..
c'est un truc de fou quand même
-

finstreet - WRInaute accro

- Messages: 16999
- Inscription: 10 Juil 2005
thierry8 a écrit:en fait en php, il n'existe aucune fonction permettant de faire une comparaison entre deux dates, par exemple, ou de soustraire une date à une autre simplement, ou encore pour un dernier exemple, ajouter/déduire un certain temps donnée qui peut être en ANNEE, MOIS, JOUR, MINUTE, etc.. à une date.
c'est plus clair ?
euh... ben si... tu peux soustraire une date à une autre et encore plus facilement rajouter ou déduire un nombre à une date... je vois pas où est le pb meme
- Code: Tout sélectionner
$timestamp = time()-300; // Maintenant - 5 mns
$comparaisonDate = date ('Y-m-d H:i:s', $timestamp); // transforme le timestamp en date
Ca te donne la date du jour - 5 minutes
C'est un exemple parmi d'autres
-

siddhy - WRInaute discret

- Messages: 163
- Inscription: 20 Sep 2004
Salut,
Et du coté de mysql? Il y a pas de fonctions qui font du bon boulot au niveau des calculs de date... (bien sûr ça entraine une connexion à la base mais c'est quand même très pratique)
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html
Et du coté de mysql? Il y a pas de fonctions qui font du bon boulot au niveau des calculs de date... (bien sûr ça entraine une connexion à la base mais c'est quand même très pratique)
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Découpage du forum webmaster en 2 forums
- Gestion des langues et des sessions en PHP / MySQL
- Google Earth v4 ajoute la dimension temporelle et bien d'autres fonctions
- Google Labs lance Google Alternate Views
- L'extension Web Developer pour Google Chrome
- Google enrichit sa recherche de news
- La plateforme de blogs TextCube rachetée par Google
- Comment être numéro 1 sur Google ?
Consultez la description détaillée des produits ou services de Google suivants : Google Alternate Views
Qui est en ligne
Utilisateurs parcourant ce forum: franckM et 0 invités

