Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DONNER UNE DATE , OBTENER UN JOUR


Information sur la source

Catégorie :Date / Heure Niveau : Débutant Date de création : 14/06/2005 Date de mise à jour : 15/06/2005 09:02:38 Vu : 5 958

Note :
8,25 / 10 - par 4 personnes
8,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Donc , une fonction , qui fait que vous lui donnée une date jj/mm/aaaa sans les zéros initiaux pour les jour et les mois
et la fonction vous retournera le jour de la date et 1 si l'année est bisectile et 0 si elle ne l'est pas
Cette fonction est senser marcher pour nimporte quel date au contraire de /date('D/L') qui ne marche que du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT
 

Source

  • function année($jour, $mois, $année)
  • {
  • $ssjour = array(
  • '0' => 'Vendredi',
  • '1' => 'Samedi',
  • '2' => 'Dimanche',
  • '3' => 'Lundi',
  • '4' => 'Mardi',
  • '5' => 'Mercredi',
  • '6' => 'Jeudi',
  • '7' => 'Vendredi',
  • );
  • $sssbjour = array(
  • '1' => '0',
  • '2' => '31',
  • '3' => '60',
  • '4' => '91',
  • '5' => '121',
  • '6' => '152',
  • '7' => '182',
  • '8' => '213',
  • '9' => '244',
  • '10' => '274',
  • '11' => '305',
  • '12' => '335',
  • );
  • $sssjour = array(
  • '1' => '0',
  • '2' => '31',
  • '3' => '59',
  • '4' => '90',
  • '5' => '120',
  • '6' => '151',
  • '7' => '181',
  • '8' => '212',
  • '9' => '243',
  • '10' => '273',
  • '11' => '304',
  • '12' => '334',
  • );
  • $année1 = $année;
  • $année100 = ($année1 / 100);
  • $année400 = ($année1 / 400);
  • $année4 = ($année1 / 4);
  • if($année1 <= '0')
  • {
  • $année400r = round(($année1 / 400)+0.5);
  • $année100r = round(($année1 / 100)+0.5);
  • $année4r = round(($année1 / 4)+0.5);
  • }
  • else
  • {
  • $année400r = round(($année1 / 400)-0.5);
  • $année100r = round(($année1 / 100)-0.5);
  • $année4r = round(($année1 / 4)-0.5);
  • }
  • $annéebxr = ($année4r - $année100r + $année400r); //Nombre d'année bissextile depuis l'an 0000
  • if($année4 == $année4r && $année100 != $année100r || $année400 == $année400r) // L'année est elle bissextile ou pas ?
  • {
  • $annéebissextile = "1"; // Oui
  • $nbrmjour = $sssbjour[$mois];
  • }
  • else
  • {
  • $annéebissextile = "0"; // Non
  • $nbrmjour = $sssjour[$mois];
  • }
  • $nbrmois = (($année1 * 12) + ($mois - 1)); // Nombre de mois qu'il y a eu depuis l'an 0000
  • $nbrjour = ((($année1 * 365) + $annéebxr + ($jour))+ $nbrmjour); // Nombre de jour qu'il y a eu depuis l'an 0000
  • $sjour = $ssjour[($nbrjour - (round(($nbrjour / 7) -0.5)*7))];
  • return " $sjour / $annéebissextile ";
  • }
 function année($jour, $mois, $année)
 {

  $ssjour = array(
   '0' => 'Vendredi',
   '1' => 'Samedi',
   '2' => 'Dimanche',
   '3' => 'Lundi',
   '4' => 'Mardi',
   '5' => 'Mercredi',
   '6' => 'Jeudi',
   '7' => 'Vendredi',

  );

  $sssbjour = array(
   '1' => '0',
   '2' => '31',
   '3' => '60',
   '4' => '91',
   '5' => '121',
   '6' => '152',
   '7' => '182',
   '8' => '213',
   '9' => '244',
   '10' => '274',
   '11' => '305',
   '12' => '335',
  );

  $sssjour = array(
   '1' => '0',
   '2' => '31',
   '3' => '59',
   '4' => '90',
   '5' => '120',
   '6' => '151',
   '7' => '181',
   '8' => '212',
   '9' => '243',
   '10' => '273',
   '11' => '304',
   '12' => '334',
  );

  $année1 = $année;

  $année100 = ($année1 / 100);
  $année400 = ($année1 / 400);
  $année4 = ($année1 / 4);
  if($année1 <= '0')
  {
   $année400r = round(($année1 / 400)+0.5);
   $année100r = round(($année1 / 100)+0.5);
   $année4r = round(($année1 / 4)+0.5);  
  }
  else
  {
   $année400r = round(($année1 / 400)-0.5);
   $année100r = round(($année1 / 100)-0.5);
   $année4r = round(($année1 / 4)-0.5);
  }
  $annéebxr = ($année4r - $année100r + $année400r); //Nombre d'année bissextile depuis l'an 0000


  if($année4 == $année4r && $année100 != $année100r || $année400 == $année400r) // L'année est elle bissextile ou pas ?
  {
   $annéebissextile = "1"; // Oui
   $nbrmjour = $sssbjour[$mois];
  }
  else
  {
   $annéebissextile = "0"; // Non
   $nbrmjour = $sssjour[$mois];
  }

  $nbrmois = (($année1 * 12) + ($mois - 1)); // Nombre de mois qu'il y a eu depuis l'an 0000


  $nbrjour = ((($année1 * 365) + $annéebxr + ($jour))+ $nbrmjour); // Nombre de jour qu'il y a eu depuis l'an 0000




  $sjour =  $ssjour[($nbrjour - (round(($nbrjour / 7) -0.5)*7))]; 
  
  
  return " $sjour / $annéebissextile "; 
 }

Conclusion

J'aimerai avoir vos avis sur ce code , me prevenir si vosu rencontre des bugs ...

Merci
 

Historique

14 juin 2005 23:42:41 :
Quelque modification des commentaire que j'avait oublier
15 juin 2005 09:02:39 :
Correction de quelque bugs

Commentaires et avis

signaler à un administrateur
Commentaire de NSV le 15/06/2005 00:43:39

La première suggestion qui me vient à l'esprit c'est :
Pourquoi géré les années, les mois et les jours en string alors que ce sont typiquement des entiers (enfin des nombres) ?
En somme pourquoi s'embeter avec les '' et autre "".

signaler à un administrateur
Commentaire de dominion le 15/06/2005 00:44:46

Tu as oublié un détail : 2000 était bissextile ! En effet, on considère les passage au siècle comme non bissextile, mais les passage au millénaire le sont, eux !!!
A part ça, rien à dire de mon côté. 7/10 ;-)

signaler à un administrateur
Commentaire de alex1025 le 15/06/2005 01:14:03

là ça craint samedi n'a pas de e (Samedie) comme tu l'as ecrit

signaler à un administrateur
Commentaire de jfperras le 15/06/2005 02:59:08

Dans la même veine que NSV... à part traduire les jours de la semaine, je ne vois pas autre chose.

signaler à un administrateur
Commentaire de sebmafate le 15/06/2005 06:24:14 administrateur CS

règle des années bissextiles :
annee / 4 : OK
annee / 100 : NOK
annee / 400 : OK

signaler à un administrateur
Commentaire de dominion le 15/06/2005 07:17:57

Tu es sûr de ça ? On m'a toujours dit annee / 1000 : OK moi...

donc si je ne me trompe ca devrait donner :
(l 65) if($année4 == $année4r && $année100 != $année100r || $année400 /*que tu dois calculer*/ == $année400r)

signaler à un administrateur
Commentaire de BEAUBRIUS le 15/06/2005 09:01:31

pour les regle des année bissextiles c'est :

- Les années divisibles par 4 sont bissextiles, pas les autres.
- Exception: les années divisibles par 100 ne sont pas bissextiles.
- Exception à l'exception: les années divisibles par 400 sont bissextiles.

Ensuite , j'avait oublier la 3eme regle donc merci de me l'avoir montre.

Pour repondre à NSV , ba à vrai dire , je n'ai pas trés bien compris ce que tu a voulu dire donc ... :(

signaler à un administrateur
Commentaire de sebmafate le 15/06/2005 09:03:42 administrateur CS

biensur... même si la fac remonte à quelques années pour moi :p

signaler à un administrateur
Commentaire de garfield90 le 15/06/2005 09:12:38

Pour beaubrius,

ton système est valable qu'a partir du calendrier Gregorien (an 1582) et encore selon sa date d'adoption dans chaque pays.

pour info sur les calendriers,
http://www.chez.com/sarthe/ca-gregorien.htm

signaler à un administrateur
Commentaire de massacr le 15/06/2005 13:21:16

Mais, avec le timestamp, il le fait pas tout seul PHP ?
D'ailleurs, pour des dates anciennes, est ce que PHP comprend un timestamp négatif ?

signaler à un administrateur
Commentaire de GRenard le 15/06/2005 23:23:48

Pourquoi $ssjour a deux vendredi ? un modulo ferait l'affaire.
C'est bien tu gères dans le passé avant 1970, mais ca serait bien de gérer plus haut que 2038 :)

signaler à un administrateur
Commentaire de BEAUBRIUS le 16/06/2005 09:52:35

Grenard , ce system gères avant 1970 mais ça gère aussi plus haut de 2038
J'ai verifier avec l'horlogue de Windows et jusc'en 2099 mon code marche , et je pense que aprés aussi mais je ne peu pas verifier ...
Apres, pour $ssjour qui comporte 2 Vendredi, C'est que les valeur qu'il l'apelle vont de 0 a 7 soit 8 valeur pour 7 jour donc , il y a un jour en double.
Le 0 est rarement apeller , mais je suis tomber 1 foi , ça devait etre que c'etait le 1er Vendredi , soit quelque chose comme 01/01/0000, je me souvien plus trop ...

signaler à un administrateur
Commentaire de peter1789 le 20/06/2005 13:55:19

                Bonjour BEAUBRIUS,

Bravo pour ton script mais au lieu d'utiliser des tableaux associatifs, c'est-à-dire d'associer une chaîne de caractères (=string) clé à une autre (valeur), tu pourrais utiliser un tableau simple numéroté : par exemple pour $ssjour tu peux faire :
$ssjour = array('Vendredi','Samedi','Dimanche','Lundi', 'Mardi','Jeudi','Vendredi'); et récupérer par exemple 'Samedi' avec $ssjour[1] ...
@+ peter1789

signaler à un administrateur
Commentaire de BEAUBRIUS le 20/06/2005 19:25:26

Merci PETER1789
je n'avait pas fait cela car je ne connaisait pas
je debut en php donc j'ai pas tous les truk
C'est sur que ça peu meviter des lignes ...

Merci

signaler à un administrateur
Commentaire de grandvizir le 22/06/2005 10:39:42

Années bissextiles en Pascal (ça sera plus clair):
function IsLeap(Y:integer):boolean;
begin
  IsLeap:=(Y mod 4=0) and ((Y mod 100<>0) or (Y mod 400=0));
end;

Ensuite, voici une syntaxe simple en PHP que j'ai implémenté dans un programme que je posterai bientôt:

  function UkDayToFr($Day) {
    $ConvTbl = array ( 'monday' => 'lundi',
                       'tuesday' => 'mardi',
                       'wednesday' => 'mercredi',
                       'thursday' => 'jeudi',
                       'friday' => 'vendredi',
                       'saturday' => 'samedi',
                       'sunday' => 'dimanche'
                     );
    return $ConvTbl[strtolower($Day)];
  }

  function LongDate($Tm) {
    return UkDayToFr(date('l',$Tm)) .' '. date('d',$Tm) .' '. UkMonthToFr(date('F',$Tm)) .' '. date('Y <b>à</b> H:i:s', $Tm);

Et enfin:
http://www.siteduzero.com/php/dates.php

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.