Problem mit TÜV

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
  • Beitrag von tobialvarez ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Speicher die Zeit nicht als String, sondern als Integer in Form eines Timestamps (die Sekunden seit dem 01.01.70). Mit dem kannst Du das viel besser realisieren, als so.
    Du fragst einfach, ob der aktuelle Timestamp größer ist, als der gespeicherte Timestamp. Wenn ja: TÜV abgelaufen.


    Die restliche Zeit erhältst Du, indem Du den aktuellen Timestamp von dem Ablaufs-Timestamp subtrahierst (in Sekunden).


    Der Fehler liegt im Übrigen hier:
    ii",vehicle,tpreis,tzeit
    Du hast nur zwei Platzhalter für drei Parameter angegeben.

  • Speicher die Zeit nicht als String, sondern als Integer in Form eines Timestamps (die Sekunden seit dem 01.01.70). Mit dem kannst Du das viel besser realisieren, als so.


    Der Fehler liegt im Übrigen hier:
    ii",vehicle,tpreis,tzeit
    Du hast nur zwei Platzhalter für drei Parameter angegeben.

    Ups, habe es grade selber übersehen X(
    Könntest du mir das vielleicht vor machen? Weil ich grad nicht weiß, wie du das meinst. ^^

  • new duration = getdate() + tzeit; // Timestamp des Ablaufs
    Wichtig dabei ist, dass als Parameter für die Zeit Sekunden angegeben wird. Wenn Du das beispielsweise in Tage angeben möchtest, müsstest Du es umrechnen lassen, da am Ende immer die Zeit in Sekunden stehen muss.


    nun speicherst Du die Variable "duration" in der Datenbank, Datei, whatever.

  • new duration = getdate() + tzeit; // Timestamp des Ablaufs
    Wichtig dabei ist, dass als Parameter für die Zeit Sekunden angegeben wird. Wenn Du das beispielsweise in Tage angeben möchtest, müsstest Du es umrechnen lassen, da am Ende immer die Zeit in Sekunden stehen muss.


    nun speicherst Du die Variable "duration" in der Datenbank, Datei, whatever.

    Ok, danke dir :thumbup:
    Aber Frage:
    Wenn ich jetzt /tuev eingeben würde und halt die Zeit (/tuev [CarID] [Preis] [Zeit]) 5 wird das dann + 5 Tage gerechnet.
    Das wenn das Datum 24.06.2014 ist, das er dann +5 rechnet sprich das er dann 29.06.2014 in die Datenbank speichert.
    Grüße

  • Das Datum soll ja in Form eines Timestamps gespeichert sein.

    Code
    1403628700


    Das ist ein Timestamp.
    Du brauchst lediglich den Parameter so umzurechnen, dass er in Sekunden auf den aktuellen Timestamp aufgerechnet wird, den Du mit getdate() erhältst.


    Abgelaufen wäre der TÜV dann, wenn der gespeicherte Timestamp kleiner ist, als der aktuelle Timestamp.
    Den Timestamp kann man übrigens auch wieder in ein solches Format umrechnen mit folgender Funktion:


    http://forum.sa-mp.com/showpost.php?p=334797&postcount=471

  • Könnte ich es eigentlich direkt speichern sprich mit format und ein INSERT INTO ?
    format(query, 200, "INSERT INTO autos (tuevvorhanden, tuevzeit) VALUES ('%d', '%d-%d-%d')", sCarInfo[OfferKZ[playerid][tVehicle]][tuevvorhanden], jahr, monat, tag);



    Und dann unter OnPlayerConnect halt das Datum Abfragen lassen?

  • Klar, könntest Du das. Das wäre allerdings schwachsinnig, weswegen ich Dir ja auch die ganze Zeit etwas von Timestamps vorlabere. ^^


    Das Aufrechnen der Tage ist dann viel komplizierter, als mit einem UNIX Timestamp.
    Du müsstest dann abfragen, ob das Ergebnis dann schon nächsten Monate wäre, dann die Monate Variable erhöhen, usw. Viel zu kompliziert.
    Ein Timestamp ist somit universell einsetzbar und mit ihm kann man viel leichter rechnen.