2017-05-16 3 views
1

In meiner CakePHP bootstrap.php erwartete ich habe folgendes:CakePHP setJsonEncodeFormat funktioniert nicht als

use Cake\I18n\Date; 
use Cake\I18n\FrozenDate; 
use Cake\I18n\FrozenTime; 
use Cake\I18n\Time; 

Time::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 
FrozenTime::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 
Date::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 
FrozenDate::setJsonEncodeFormat('yyyy-MM-dd HH:mm:ss'); 

Wenn in einer API-Methode kann ich folgendes:

use Cake\I18n\Time; 

$time = new Time(); 

$this->set([ 
    'time' => $time, 
    '_serialize' => ['time'] 
]); 

Das Ergebnis ist so etwas wie dieses :

{ 
    "time": "2017-05-16 11.55.13" 
} 

Beachten Sie die falsche Zeitformat. Aus irgendeinem Grund ändert CakePHP/PHP 7/Linux die : in eine .. Unter Windows funktioniert es gut.

CakePHP version =>3.4.6 (obwohl dieses Problem gab es eine lange Zeit)

PHP Version =>7.0.15-0ubuntu0.16.04.4

+0

Dies kann Ihnen helfen. https://book.cakephp.org/3.0/en/core-libraries/time.html – vpdeva

+0

Gibt es etwas, das ich vermisse? Ich habe getan, was diese Seite vorschlägt, um die json Ausgabe zu ändern, aber es funktioniert nicht ... – DBnR

+1

Was ist Ihre ICU Version ('\ INTL_ICU_VERSION')? Stellen Sie sicher, dass Sie mindestens 56.1 verwenden – ndm

Antwort

1

Die richtige Antwort, wie durch @ndm zur Verfügung gestellt:

Mindestens in ICU Versionen vor 56.1, ist die korrekte Methode, SetJsonEncodeFormat verwenden, um den Doppelpunkt mit ' wie folgt zu entkommen:

Verwandte Themen