Wochentag abrufen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Zavus Leutz,


    ich wollte fragen, ob es möglich ist den Wochentag abzurufen. Ich würde nähmlich gerne an bestimmten tagen in der woche bestimmte funktionen frei geben. Wäre cool wenn das jemand weis. bitte ohne mysql oda so n scheiss. den dreck versteh ich eh net ;)


    MfG
    Psycho

  • new jahr,monat,tag;
    getdate(jahr,monat,tag);


    Die werte werden in Zahlen zurückgegeben


    also musst du einfach abfragen machen oder case


    stock GetDay(const tag_zahl)
    {
    switch(tag_zahl)
    {
    case 1:return "Montag";
    case 2:return "Dienstag";
    case 3:return "Mittwoch";
    case 4:return "Donnerstag";
    case 5:return "Freitag";
    case 6:return "Samstag";
    case 7:return "Sonntag";
    }
    }


    Beispiel dazu:


    SendClientMessage(playerid,Farbe,GetDay(tag));

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • falsch. getdate gibt das datum raus. würden wir heute von getdate tag abrufen, würden wir den 28 erhalten

  • stock Wochentag(t,m,j) {//hier trägt man das Datum ein (Tag, Monat, Jahr) z.B. 29,7,2009 und diese Funktion rechnet dann den Wochentag aus
    new wt=((j-2009)*365)+t;
    for(new i=2012; i<=j; i+=4) {
    wt++; }
    switch(m) {
    case 1,3,5,7,8,10,12: { wt+=(m-1)*31; }
    case 2: {
    for(i=2008; i<=j; i+=4) {
    if(i==j) { wt+=29; }
    else { wt+=28; }}}
    default: { wt+=(m-1)*30; }}
    new wta[]= { "Donnerstag","Freitag","Samstag","Sonntag","Montag","Dienstag","Mittwoch" };
    while(wt>=7) { wt-=7; }
    return wta[wt];
    }
    Sollte ich da jetzt keinen Denkfehler drinne haben, müsste der die richtigen Wochentage ausgeben
    //EDIT: Hatte nen Fehler gefunden, habs bereichtigt

  • hab n fehler entdeckt ^^


    Z. 8 for(new i...


    so jetzt zum ergebnis:


    mein cmd
    if (strcmp("/Zeit", cmdtext, true) == 0)
    {
    getdate(Jahr, Monat, Tag);
    format(String, sizeof(String), " Heute ist %s", Wochentag(Jahr, Monat, Tag));
    SendClientMessage(playerid, Rot, String);
    return 1;
    }
    Ergebnis:
    Heute ist r*********


    das grüne ist mein passwort. das r gehört noch nicht zum pw ^^. ich sag mal:
    "nett gedacht, nett gemacht" xD

  • 1) In Zeile 8 ist kein Fehler^^
    2) Du hast das Datum falsch eingefügt
    if (strcmp("/Zeit", cmdtext, true) == 0)
    {
    getdate(Jahr, Monat, Tag);
    format(String, sizeof(String), " Heute ist %s", Wochentag(Tag, Monat, Jahr));
    SendClientMessage(playerid, Rot, String);
    return 1;
    }

  • achso zeile 8 also kein fehler:


    C:\Users\Psycho\Desktop\Programmieren!\SA-MP Server\gamemodes\[GM]MyGamemode0.1.pwn(5214) : error 017: undefined symbol "i"
    C:\Users\Psycho\Desktop\Programmieren!\SA-MP Server\gamemodes\[GM]MyGamemode0.1.pwn(5214) : warning 206: redundant test: constant expression is non-zero
    C:\Users\Psycho\Desktop\Programmieren!\SA-MP Server\gamemodes\[GM]MyGamemode0.1.pwn(5214) : error 017: undefined symbol "i"
    C:\Users\Psycho\Desktop\Programmieren!\SA-MP Server\gamemodes\[GM]MyGamemode0.1.pwn(5214) : warning 215: expression has no effect
    C:\Users\Psycho\Desktop\Programmieren!\SA-MP Server\gamemodes\[GM]MyGamemode0.1.pwn(5214) : error 001: expected token: ")", but found ";"
    C:\Users\Psycho\Desktop\Programmieren!\SA-MP Server\gamemodes\[GM]MyGamemode0.1.pwn(5214) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    stock Wochentag(t,m,j)
    {
    new wt=((j-2009)*365)+t;
    for(new i=2012; i<=j; i+=4)
    {
    wt++;
    }
    switch(m)
    {
    case 1,3,5,7,8,10,12:
    {
    wt+=(m-1)*31;
    }
    case 2:
    {
    for(new/*dieses new hat gefehlt*/ i=2008; i<=j; i+=4)
    {
    if(i==j)
    {
    wt+=29;
    }
    else
    {
    wt+=28;
    }
    }
    }
    default:
    {
    wt+=(m-1)*30;
    }
    }
    new wta[]=
    {
    "Donnerstag","Freitag","Samstag","Sonntag","Montag","Dienstag","Mittwoch"
    };
    while(wt>=7)
    {
    wt-=7;
    }
    return wta[wt];
    }


    und wegen dem datum, dachte ich j = jahr, m = monat (stimmt auch als einzigstes ^^) und t = tag
    trotz datum wechseln ist das ergebnis das selbe. ich glaube das der fehler i-wo in den letzten 4 zeilen im stock liegen

  • WIESO GIBT DER MEIN PW RAUS?!?!?!?!?!?!?!?!

  • WochenTag(ParamJahr) //
    {
    new MyTag = ((floatround(ParamJahr * 365.25) - 620628) % 7), MyResult[12];
    switch(MyTag)
    {
    case 0: MyResult = "Sonntag";
    case 1: MyResult = "Montag";
    case 2: MyResult = "Dienstag";
    case 3: MyResult = "Mittwoch";
    case 4: MyResult = "Donnerstag";
    case 5: MyResult = "Freitag";
    case 6: MyResult = "Samstag";
    default: MyResult = "Error";
    }
    return MyResult;
    }


    Nicht getestet, müßte aber klappen. ;)

  • nein mittwoch


    @ DMA: was muss man dann bei ParamJahr einfügen?

  • ParamJahr
    Sagt alles oder?
    new gYear, gMonth, gDay;
    getdate(gYear, gMonth, gDay);
    printf("%s", WochenTag(gYear));


    Wär ein kleines Beispiel das theoretisch funktionieren dürfte.

  • okay danke ^^


    habs jetzt umgeändert in:
    WochenTag(ParamJahr) //
    {
    new MyTag = ((floatround(ParamJahr * 365.25) - 620628) % 7), MyResult[12];
    switch(MyTag)
    {
    case 1: MyResult = "Sonntag";
    case 2: MyResult = "Montag";
    case 3: MyResult = "Dienstag";
    case 4: MyResult = "Mittwoch";
    case 5: MyResult = "Donnerstag";
    case 6: MyResult = "Freitag";
    case 7: MyResult = "Samstag";
    default: MyResult = "Error";
    }
    return MyResult;
    }dann kommt auch mittwoch raus. aba ob des dann auch nächste woche klappt oda morgen oda sonntags das muss man ausprobieren.


    Danke @ll
    ich meld mich dann nächste woche nochmal ;)


    MfG
    Psycho

  • Bei mir klappt es jetzt.


    Vielen Dank an KeksOfDeath, BlackFox, DMA und Bright =)


    EDIT: Mich würde noch interessieren wie ich eine Abfrage damit mache?


    weil if(WochenTag(gYear)== "Mittwoch") wird ja nicht funktionieren :P

    Einmal editiert, zuletzt von 8D ()

  • stock TagDerWoche()
    {
    new tag,monat,jahr;
    getdate(jahr,monat,tag);
    if (monat < 3)
    {
    monat += 12;
    jahr--;
    }
    return ((13*monat+3)/5 + tag + jahr + jahr/4 - jahr/100 + jahr/400) % 7;
    }
    stock GetTag(intnummer)
    {
    switch(intnummer)
    {
    case 0:return "Montag";
    case 1:return "Dienstag";
    case 2:return "Mittwoch";
    case 3:return "Donnerstag";
    case 4:return "Freitag";
    default: return "Fehler!";
    }
    }




    Nochn Code von mir xD

    Mfg. BlackFoX_UD_ alias [BFX]Explosion