• 06 Juin 2026, 20:11:43


Auteur Sujet: [RÉSOLU] Afficher le jour de la semaine en fonction d'un date  (Lu 2159 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Salut,

j'aimerais afficher le jour de la semaine en récupérant la date, mais je ne sais pas trop comment m'y prendre. :(

Si quelqu'un pourrait m'éclairer... :happy


Alexandre
« Modifié: 09 Juillet 2008, 10:39:25 par -Alexandre »

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Afficher le jour de la semaine en fonction d'un date
« Réponse #1 le: 20 Juin 2008, 18:12:48 »

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Afficher le jour de la semaine en fonction d'un date
« Réponse #2 le: 20 Juin 2008, 19:44:22 »
Ça ne m'aide pas...

++
Alexandre

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Afficher le jour de la semaine en fonction d'un date
« Réponse #3 le: 20 Juin 2008, 20:19:43 »
Bah tu le prend comme exemple ....

++
nikko

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Afficher le jour de la semaine en fonction d'un date
« Réponse #4 le: 21 Juin 2008, 06:40:49 »
Désolé mais je ne vois nul part ce que je cherche là-dedans.


++
Alexandre

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Afficher le jour de la semaine en fonction d'un date
« Réponse #5 le: 25 Juin 2008, 12:25:50 »
Pour faire ce que tu veux faire, il faut tout d'abord que tu convertisses ta date en jour julien (qui est le nombre de jour écoulé entre le 1° janvier 4713 av JC et la date en question).
Une fois que tu as ce nombre, il te suffit de faire un modulo 7 pour trouver le jour de la semaine.

J'ai une fonction C qui donne le jour julien pour une date donnée. Comme le C et le PAWN sont très proches, tu n'aura surement pas de difficulté ç faire le portage (parce que moi j'ai pas le temps). Mais fait attention aux conversions entre le type de données.

Voici la fonction :
unsigned int JourJulien (unsigned int Jour_P, unsigned  int Mois_P, unsigned int Annee_P)
{
double Tmp1_L, Tmp2_L;
double JourJulien_L;

   /* Recalage de l'annee et du mois */
   if (Mois_P < 3)
   {
      Annee_P--;
      Mois_P += 12;
   }

   /* Calcul du jour Julien */
   Tmp1_L = (int)(Annee_P/100.0);
   Tmp2_L = 2.0 - Tmp1_L + (int)(Tmp1_L/4.0);
   JourJulien_L = (int)(365.25 * Annee_P) + (int)(30.6001 * (Mois_P+1)) + Jour_P + Tmp2_L + 1720994;

   /* Retour de la fonction */
   return (unsigned int)JourJulien_L;
}

Ensuite, tu prends le retour de cette fonction, tu fais un modulo 7 (Nombre%7) et tu obtiens un chiffre entre 0 et 6.
0 -> Mardi, 1->Mercredi, ..., 6->Lundi.

Pour vérifier que tu as correctement écrit la fonction en PAWN, le jour julien du 25 juin 2008 est 2454642.

++
Syg
Courtesy of GtaManiac

Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Afficher le jour de la semaine en fonction d'un date
« Réponse #6 le: 27 Juin 2008, 19:51:05 »
C'est comme si un chinois venait de me dire "comment ça va ??"

En gros, faut capiche quand même parce que la xD
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Afficher le jour de la semaine en fonction d'un date
« Réponse #7 le: 28 Juin 2008, 15:38:33 »
Salut,

merci pour la fonction Syg, par contre j'ai quelques difficultés à adapter. :(

Code: (pawn) [Sélectionner]
public JourJulien(Jour_P, Mois_P, Annee_P)
{
new Tmp1_L, Tmp2_L;
new JourJulien_L;

// Recalage de l'année et du mois
if(Mois_P < 3)
{
    Annee_P--;
    Mois_P += 12;
}

// Calcul du Jour Julien
Tmp1_L = Annee_P / 100;
Tmp2_L = 2 - Tmp1_L + Tmp1_L / 4;
JourJulien_L = 365.25 * Annee_P  +  30.6001 * (Mois_P + 1)  +  Jour_P  +  Tmp2_L  +  1720994;

return JourJulien_L;
}

Code: (pawn) [Sélectionner]
new zecko, moduloz0r;
zecko = JourJulien(25, 6, 2008);
moduloz0r = zecko % 7;
new stringz0r[48];
format(stringz0r, 72, "%d (original:2454642), modulo : %d (original:1)", zecko, moduloz0r);
SendClientMessageToAll(cwhite, stringz0r);

Me renvoit: :(

De plus, JourJulien_L = 365.25 * Annee_P  +  30.6001 * (Mois_P + 1)  +  Jour_P  +  Tmp2_L  +  1720994; me renvoit Tag Mismatch comme warning. :(


++
Alexandre


EDIT: OoOh, un floatround() sur le return et passé JourJulien_L enFloat et ça marche. :ohmy :king
« Modifié: 09 Juillet 2008, 10:39:00 par -Alexandre »