将JS日期格式更改为PHP的函数

时间:2014-03-17 10:14:57

标签: javascript php regex date

我试图将javascript日期格式(示例' dd / mm / yy')转换为PHP等效值(示例' d / m / Y')。这适用于jQuery datepicker UI。

我找到了一个函数(未经测试)反之亦然,here

我改变了一下看起来像这样:

function dateFormat(){

    $pattern = array(

        //day
        'dd',
        'd',
        'DD',
        'o',

        //month
        'MM',
        'M',
        'mm',
        'm',

        //year
        'yy',
        'y'
    );
    foreach($pattern as &$p)
    {
        $p = '/'.$p.'/';
    }

    $replace = array(

        //day
        'd',        //day of the month
        'j',        //3 letter name of the day
        'l',        //full name of the day
        'z',        //day of the year

        //month
        'F',        //Month name full
        'M',        //Month name short
        'm',        //numeric month leading zeros
        'n',        //numeric month no leading zeros

        //year
        'Y',        //full numeric year
        'y'     //numeric year: 2 digit
    );

    return preg_replace($pattern, $replace, 'dd/mm/yy');
}

然而,我没有返回预期的' d / m / Y'而是得到了' j / n / Y'。我认为它按顺序进行更换;即在d之前找到dd并首先替换它。发生了什么事?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将strtr与关联数组一起使用(必须完成它):

$trans = array('dd' => 'd',
               'mm' => 'm',
               'yy' => 'Y',
               'd'  => 'j');

$phpDateFormat = strtr($datePickerFormat, $trans);

请注意,2个字符序列必须位于数组的开头。