2016-07-11 1 views
2

ich eine Form haben, die sowohl ein Datum und eine Zeit einreicht, und ich möchte ein \ Datetime-Objekt erstellen, basierend auf diesen Wertenerstellen Datetime von Datums-String und Zeit-String

Der $submission['time'] Wert wie folgt aussieht: ‚T09: 45:00'

der $submission['date'] Wert wie folgt aussieht: '2016.07.11'

ich dies brach jedoch

var_dump(\DateTime::createFromFormat(
    'Y-m-d TH:i:s', $reportArray['date'] . ' ' . $reportArray['time']) 
); // also tried without 'T' (TH:i:s) 

versucht haben, Skript.

Gibt es eine einfache Möglichkeit, ein \ DateTime-Objekt aus einer Datums- und einer Einmalzeichenfolge zu erstellen?

+0

Ich denke, das 'T' zu Beginn der Zeit Zeichenfolge ist das Problem. Ändert sich das jemals? Was tut es? –

+0

Ich denke, es zeigt Sommerzeit @KIKOSoftware, eigentlich glaube ich nicht, dass das richtig ist. –

+1

Ja, das 'T' im Format repräsentiert eine Zeitzone, kein 'T'. Sie könnten dieses Format versuchen: ''Y-m-d \ TH: i: s''. Der umgekehrte Schrägstrich entzieht dem "T" ein buchstäbliches "T". Oh, und Sie müssen wirklich nicht den Raum hinzufügen. –

Antwort

2

Das 'T', das Sie im Format verwendet haben, repräsentiert eine Zeitzone, kein buchstäbliches 'T'. Sie könnten dieses Format verwenden: 'Y-m-d\TH:i:s'. Der umgekehrte Schrägstrich entzieht dem "T" ein buchstäbliches "T". Ich habe den Raum weggelassen, weil du ihn nicht brauchst. Wie folgt:

var_dump(\DateTime::createFromFormat(
    'Y-m-d\TH:i:s', $reportArray['date'] . $reportArray['time']) 
); 

Diese Antwort nimmt natürlich an, dass das 'T' immer da ist und sich nie ändert.

+0

Keine Notwendigkeit, 'createFromFormat()' mit dieser Art von Eingabe zu verwenden; es ist eine vollkommen gültige Eingabe, also benutze 'new DateTime()': [demo] (https://eval.in/603415). –

0

Try this

<?php 
$d1=$submission['date']='2016-07-11'; 
$t1=$submission['time']='T09:45:00'; 
$con=$d1.$t1; 
$displaytime=date('d-m-Y H:i:s A',strtotime($con)); 
echo $displaytime; 
?> 

Es wird eine Ausgabe wie gibt: die Sie wünschten 2016.11.07 09.45.00.