dongni3854 2014-03-17 10:14
浏览 41
已采纳

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

I'm trying to convert a javascript date format (example 'dd/mm/yy') to the PHP equivilent (example 'd/m/Y'). This is for use with the jQuery datepicker UI.

I found a function (untested) to do it the other way round, here.

I've altered it a bit to look like this:

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');
}

However, instead of returning the expected 'd/m/Y', I get 'j/n/Y'. I thought it'd do the replace in order; i.e. find dd before d and replace that first. What's going on?

Thanks.

  • 写回答

1条回答 默认 最新

  • dongyilai4214 2014-03-17 10:36
    关注

    You can use strtr with an associative array (you must complete it):

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

    Note that 2 characters sequences must be at the begining of the array.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: