2015-05-12 9 views
7

Ho un config per dateformats phpphp dateformat al momento js formato

'dateFormat'  => 'd.m.Y', 
'timeFormat'  => 'H:i', 
'dateTimeFormat' => 'd.m.Y H:i', 

Ma per il DateTimePicker ho bisogno moment.js formattazione (http://momentjs.com/docs/#/displaying/format/) che avrà un aspetto in questo modo:

DD.MM.YYYY 
HH:mm 
DD.MM.YYYY HH:mm 

Per me non sarebbe un problema sostituire d con DD e m con MM ma mi stavo chiedendo se nessuno prima ha costruito qualcosa per farlo.

+0

Per che cosa? Conversione tra formati? Questo è ciò che la funzione [PHP Date] (http://php.net/manual/en/function.date.php) è per. –

+0

Voglio configurare come viene visualizzata l'ora nel datimepicker e questo richiede le stringhe leggermente diverse. Sarebbe bello se non fosse necessario configurarlo due volte, prima per php che mostra l'ora e una seconda volta (con lo stesso formato ma in altro modo) per javascript –

+0

Come è lo stesso formato ma in un altro modo? Non è questa la definizione di un altro formato? Ma no, non c'è un modo magico per rilevare il formato richiesto; Puoi scrivere una funzione che converti te stesso tra il tuo formato PHP e il tuo formato JS (anche se non esiste un formato 'JS' universale come potresti pensare). –

risposta

15

così ho scritto una funzione di supporto litte per convertire i dateformats php al formato richiesto per moment.js

function convertPHPToMomentFormat($format) 
{ 
    $replacements = [ 
     'd' => 'DD', 
     'D' => 'ddd', 
     'j' => 'D', 
     'l' => 'dddd', 
     'N' => 'E', 
     'S' => 'o', 
     'w' => 'e', 
     'z' => 'DDD', 
     'W' => 'W', 
     'F' => 'MMMM', 
     'm' => 'MM', 
     'M' => 'MMM', 
     'n' => 'M', 
     't' => '', // no equivalent 
     'L' => '', // no equivalent 
     'o' => 'YYYY', 
     'Y' => 'YYYY', 
     'y' => 'YY', 
     'a' => 'a', 
     'A' => 'A', 
     'B' => '', // no equivalent 
     'g' => 'h', 
     'G' => 'H', 
     'h' => 'hh', 
     'H' => 'HH', 
     'i' => 'mm', 
     's' => 'ss', 
     'u' => 'SSS', 
     'e' => 'zz', // deprecated since version 1.6.0 of moment.js 
     'I' => '', // no equivalent 
     'O' => '', // no equivalent 
     'P' => '', // no equivalent 
     'T' => '', // no equivalent 
     'Z' => '', // no equivalent 
     'c' => '', // no equivalent 
     'r' => '', // no equivalent 
     'U' => 'X', 
    ]; 
    $momentFormat = strtr($format, $replacements); 
    return $momentFormat; 
} 
+1

grazie per questo – Jade

+0

Puoi anche includere un ulteriore passaggio per supportare l'escape trovato in PHP . Aggiungi questo codice direttamente dopo la definizione dell'array '$ replacements': ' foreach ($ sostituzioni da $ da => $ a) {$ sostituzioni ['\\'. $ Da] = '['. $ Da. ' ] '; } ' –

Problemi correlati