scripts pour la gestion des dates

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

scripts pour la gestion des dates

Message le Jeu Oct 26, 2006 21:42

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 :wink:


finstreet
WRInaute accro
WRInaute accro
 
Messages: 10468
Inscription: Dim Juil 10, 2005 12:39

Message le Jeu Oct 26, 2006 23:04

j'ai pas totu compris en fait... pour les dates avec php y'a pas vraiment de pb

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Oct 27, 2006 7:03

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 ? :?


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5321
Inscription: Lun Juin 13, 2005 14:13

Message le Ven Oct 27, 2006 9:43

$date1-$date2

Bon ok je :arrow:


narayana
WRInaute passionné
WRInaute passionné
 
Messages: 835
Inscription: Ven Jan 28, 2005 12:53

Message le Ven Oct 27, 2006 9:46

Ouep
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
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Oct 27, 2006 11:16

merci narayana, je vais plancher dessus tout à l'heure


narayana
WRInaute passionné
WRInaute passionné
 
Messages: 835
Inscription: Ven Jan 28, 2005 12:53

Message le Ven Oct 27, 2006 11:40

Pas de quoi si tu en as besoin d'autres, j'en ai une trifouillée :D

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Oct 27, 2006 13:04

waouh! je ne dis pas non. ( je galère un peu avec ces dates :x )


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


narayana
WRInaute passionné
WRInaute passionné
 
Messages: 835
Inscription: Ven Jan 28, 2005 12:53

Message le Ven Oct 27, 2006 13:58

Désolé pour les fuseaux horaires je n'ai pas de connaissances


finstreet
WRInaute accro
WRInaute accro
 
Messages: 10468
Inscription: Dim Juil 10, 2005 12:39

Message le Ven Oct 27, 2006 15:21

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

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Oct 27, 2006 15:44

arf ! oui, j'ai oublié de préciser que s'il existait une solution sans attaquer le timestamp ça serait le top. (en fait je cherche de ce coté)


siddhy
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 163
Inscription: Lun Sep 20, 2004 15:50

Message le Lun Oct 30, 2006 13:56

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


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités