Convert DateTime Stringa PHP

Ho già studiato un sacco di sito come posso convertire PHP DateTime oggetto Stringa. Io ho sempre visto “Stringa DateTime” e non “DateTime la Stringa”

PHP DateTime può essere eco, ma quello che voglio elaborare il mio DateTime con PHP funzioni di stringa.

La mia domanda è: come posso fare in PHP dateTime Oggetto di una stringa a partire da questo tipo di codice:

$dts = new DateTime(); //this returns the current date time
echo strlen($dts);
  • Perché vuoi elaborare la vostra DateTime con funzioni di stringa? Cosa stai cercando di realizzare?
  • un qualche tipo di un tipo datetime validatore? in php

 

6 Replies
  1. 369

    È possibile utilizzare il formato metodo di DateTime classe:

    $date = new DateTime('2000-01-01');
    $result = $date->format('Y-m-d H:i:s');

    Se format non riesce per qualche motivo, si tornerà FALSE. In alcune applicazioni, potrebbe avere senso per gestire la mancanza di caso:

    if ($result) {
      echo $result;
    } else { //format failed
      echo "Unknown Time";
    }
    • +1 funziona. Potete anche dire come verificare la presenza di null (nella stessa riga) prima di fare questa conversione. Grazie!
    • Ehi @Watt, buon punto! Ho ampliato l’esempio mostra come la mancanza di caso potrebbe essere gestita.
    • hai dimenticato il fuso orario, invece di utilizzare $date->format('c') o $date->format('Y-m-d H:i:s Z') o $date->format('Y-m-d H:i:s T')
    • cosa utilizzando l’istruzione non è necessario essere in grado di utilizzare ->formato? Si dice che manca qualcosa in Zend
    • È possibile utilizzare questa forma più breve $result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s'); dal PHP 5.4. Guarda qui: docs.php.net/manual/en/migration54.new-features.php membro della Classe di accesso su istanza è stata aggiunta, ad esempio, (new Foo)->bar().
  2. 14

    Ci sono alcuni formati predefiniti in date_d.php per l’uso con format come:

    define ('DATE_ATOM', "Y-m-d\TH:i:sP");
    define ('DATE_COOKIE', "l, d-M-y H:i:s T");
    define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
    define ('DATE_RFC822', "D, d M y H:i:s O");
    define ('DATE_RFC850', "l, d-M-y H:i:s T");
    define ('DATE_RFC1036', "D, d M y H:i:s O");
    define ('DATE_RFC1123', "D, d M Y H:i:s O");
    define ('DATE_RFC2822', "D, d M Y H:i:s O");
    define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
    define ('DATE_RSS', "D, d M Y H:i:s O");
    define ('DATE_W3C', "Y-m-d\TH:i:sP");

    Utilizzare come questa:

    $date = new \DateTime();
    $string = $date->format(DATE_RFC2822);
    • È possibile l’uso costante del DateTime (ad esempio DateTime::ISO8601), rende il codice più facile da leggere.
  3. 14

    Il modo più semplice che ho trovato è:

    $date   = new DateTime(); //this returns the current date time
    $result = $date->format('Y-m-d-H-i-s');
    echo $result . "<br>";
    $krr    = explode('-', $result);
    $result = implode("", $krr);
    echo $result;

    Spero che aiuta.

  4. 1

    Strada più breve, utilizzando la lista. E si può fare quello che si vuole con ogni componente di data.

    list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s'));
    echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;
  5. 0

    Ha funzionato per me

    $start_time   = date_create_from_format('Y-m-d H:i:s', $start_time);
    $current_date = new DateTime();
    $diff         = $start_time->diff($current_date);
    $aa           = (string)$diff->format('%R%a');
    echo gettype($aa);

Lascia un commento