javascriptphpmomentjs

php dateformat to moment js format


I have got a config for php dateformats

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

But for the datetimepicker i need moment.js formatting (http://momentjs.com/docs/#/displaying/format/) that will look like so:

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

This would be no problem for me to replace d with DD and m with MM but i was wondering if nobody before has built something to do this.


Solution

  • So i wrote a litte helper function to convert the php dateformats into the format needed for 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;
    }