我使用的是jQuery数据采集器,其中的日期格式显然与php格式不匹配。
如何将datepicker格式转换为php格式,以便我能够按照在datepicker格式中定义的相同约定输出date( $format )。因此,假设我将类似于dd/mm/yyyy的格式,如何在php中将其转换为m/d/o?或者如果我将其指定为d-m-yy,如何将其转换为n-j-y
基本上,我想知道如何转换允许的日期选择器格式,不管字母或分隔符是什么到php。
我试过使用preg_replace,但问题是单字母和双字母是相同的。dd变成了nn,因为它试图两次替换d。能不能用regex的东西?我有点不知道要转换的逻辑是如何实现的。
编辑:我对细节上的疏忽表示歉意。js格式实际上类似于dd/mm/yyyy,而不是实际的日期输出。实际上,在CMS中,用户定义了datepicker使用的格式(dd/mm/yyyy或任何其他格式序列和数据报警器具有的分隔符)。PHP用于使用定义的格式和序列输出当前日期。我希望他们定义一个PHP格式,然后将其转换为js格式。但力量总是以他们想要的方式得到东西--叹息)。
Edit#2,这里是一个代码页上的工作脚本,它显示了这个问题,其中的字母格式被单独处理,并加倍处理。mm变成了nn,而不仅仅是m。其余的角色也都是个性化的。
发布于 2013-06-14 02:50:43
其实比我想象的要容易。我不知道你能用#var#i。所以把它混合到两个数组中,然后用preg_replace.
$pattern = array( '#mm#i', '#m#i', '#dd#i', '#d#i', '#yyyy#i', '#yy#i' );
$replacement = array( 'm', 'n', 'd', 'j', 'o', 'y' );
$date_format = preg_replace( $pattern, $replacement, $option_format );感谢那些为我的问题提供答案的人。我很抱歉。
发布于 2013-06-13 21:03:38
这将是如何处理这一问题的:
$date = '13/06/2013';
$date = implode("-",array_reverse(explode("/",$date)));
$time = strtotime($date);
echo date("m-d-Y H:i:s",$time); // or however you want to format/爆炸日期strtotime()格式strtotime()字符串内爆这些片段发布于 2013-06-13 21:04:14
您可能希望使用日期::createFromFormat,这让我们定义字符串是如何格式化的。然后,使用该对象的format()函数以所需的方式输出日期。
例如:
date_default_timezone_set('Europe/Berlin'); // or any other timezone - you must set a timezone though
$date = DateTime::createFromFormat('d/m/Y', '20/05/1996');
$formatted_date = $date->format('Y-m-d');
var_dump($formatted_date); // output: string(10) "1996-05-20"您几乎可以使用与常规date()函数相同的格式化字母,但是如果需要额外的字母-例如'o',您可以使用格式化日期:$yet_another_date = date('m/d/o', strtotime($formatted_date));
https://stackoverflow.com/questions/17096874
复制相似问题