GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Bayshore le 20 Juin 2008, 17:20:50
-
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
-
Salut
Utilise ca ;) :
http://pastebin.gtaonline.fr/pastebin.php?show=445 (http://pastebin.gtaonline.fr/pastebin.php?show=445)
++
nikko
-
Ça ne m'aide pas...
++
Alexandre
-
Bah tu le prend comme exemple ....
++
nikko
-
Désolé mais je ne vois nul part ce que je cherche là-dedans.
++
Alexandre
-
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
-
C'est comme si un chinois venait de me dire "comment ça va ??"
En gros, faut capiche quand même parce que la xD
-
Salut,
merci pour la fonction Syg, par contre j'ai quelques difficultés à adapter. :(
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;
}
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: (http://www.picdo.net/Fichiers/9d0c295371bc9e625d5d2045385d64b/sa-mp-010.png) :(
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