Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit der Zeitberechnung DateTime()

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gortun
    hat ein Thema erstellt Problem mit der Zeitberechnung DateTime().

    Problem mit der Zeitberechnung DateTime()

    Hallo leute,
    ich habe jetzt schon hin und her probiert, aber ich kann einfach keine Minuten ausgeben bei der Berechnung von Zeitabständen. Tage zeigt er mir über "->days" an, aber wenn ich es mit "->mins" oder "->minutes" probiere, sowie andere Angaben bekomm ich gar nichts angezeigt. Mithilfe von "->format('i')" bekomm ich den inhalt der Klammern dargestellt.

    Aber erstmal zu meinem Ziel:
    Ich habe in einer Datei ein Datum mit Uhrzeit zu stehen, dieses soll ausgelesen werden und von der aktuellen Zeit abgezogen werden, um den Zeitunterschied zu ermitteln.

    mein Code:
    PHP-Code:
    $datei file('blabla/link/bla.txt');

    $var $datei[14];

    $vard substr($var,62);
    $varm substr($var,32);
    $vary substr($var,02);
    $varh substr($var,92);
    $varmi substr($var,122); 


    $vardatetime = new DateTime($vary.'-'.$varm.'-'.$vard.'-'.$varh.'-'.$varmi);
    $vardatetime2 = new DateTime();
    $varinterval $vardatetime2->diff($vardatetime);
    echo 
    $varinterval->days
    Wie gesagt, ich hätte gern den Zeitinterval in Minuten, nur gibt er mir die nicht aus.
    Ein Beispielcode aus dem Manual funktioniert zwar mit "->format()", aber dieses hat ein festes Datum im Code, meins soll vorher ausgelesen werden. Hab ich irgendwo einen Fehler drin?^^

    mfG
    Gortun

  • Gortun
    antwortet
    Vielen Dank, das Problem ist gelöst

    Wichtig ist aber noch die Konstruktion der Zeit. Datum mit '-' trennen, Zeit mit ':' und zwischen Zeit und Datum ein Leerzeichen ' '. Sonst gibt er die aktuelle Zeit aus.

    Der richtige Code sieht so aus:

    PHP-Code:
    $datei file('blaaablaabla/link/bla.txt');

    $var $datei[14];

    $vard substr($var,62);
    $varm substr($var,32);
    $vary substr($var,02);
    $varh substr($var,92);
    $varmi substr($var,122); 


    $vardatetime = new DateTime($vary.'-'.$varm.'-'.$vard.' '.$varh.':'.$varmi);
    $vardatetime2 = new DateTime();
    $varinterval $vardatetime2->diff($vardatetime);
    echo 
    $varinterval->format('%i'); 
    Vielen Dank für eure Hilfen

    Einen Kommentar schreiben:


  • jspit
    antwortet
    Die Formatangaben sind für jeden Typ ein wenig anders. Für Dateinterval wird immer ein % davor erwartet:
    PHP-Code:
    $varinterval->format('%y-%m-%d-%H-%i-%s'); 
    s. DateInterval::format

    Und mit - zwischen den Zeitangaben bekommst du auch keine richtige Zeit,
    lass dir mal dein $vardatetime mit var_dump ausgeben.

    Einen Kommentar schreiben:


  • Gortun
    antwortet
    Auch wenn ich nur das Jahr via format('Y') ausgeben möchte, wird der Inahlt der Klammern ausgegeben. In dem Falle ein großes Y.

    Manchmal fühle ich mich von PHP gedisst xD

    Einen Kommentar schreiben:


  • eagle275
    antwortet
    der Format-Specifier ist nicht ganz so liberal wie php sonst ...

    Manual -> Y
    du -> y

    ?? vermutlich wird die Ausgabe dort schon abgebrochen - weswegen du die Formatstrings statt der Inhalte bekommst

    Einen Kommentar schreiben:


  • Gortun
    antwortet
    PHP-Code:
    echo $varinterval->format('y-m-d-H-i'); 
    die Ausgabe ist: y-m-d-H-i

    im Beispielcode vom Manual funktioniert die Ausgabe richtig

    Beispielcode
    PHP-Code:
    <?php
    $date 
    = new DateTime('2000-01-01');
    echo 
    $date->format('Y-m-d H:i:s');
    ?>

    Einen Kommentar schreiben:


  • Tropi
    antwortet
    Hast du mal in der Doku geschaut welche Attribute das Objekt hat?
    DateInterval {
    /* Eigenschaften */
    public integer $y ;
    public integer $m ;
    public integer $d ;
    public integer $h ;
    public integer $i ;
    public integer $s ;
    public integer $invert ;
    public mixed $days ;

    /* Methoden */
    public __construct ( string $interval_spec )
    public static DateInterval createFromDateString ( string $time )
    public string format ( string $format )
    }
    Wie sieht dein Ansatz mit format() aus?

    Einen Kommentar schreiben:

Lädt...
X