如何将此日期转换为 Y-m-d 格式(PHP)?

4

我有一个字符串日期:10.21.2011,格式为mm.dd.yyyy

如何将其转换为Y-m-d格式?这是我尝试的方法,但它总是给我1970年的日期。

$date = '10.21.2011';
$newDate = date('Y-m-d', strtotime($date));

$date = date('Y-m-d', strtotime($date));

谢谢!


您应该阅读文档(http://php.net/manual/en/function.strtotime.php):(关于第一个参数)*日期/时间字符串。有效格式在[日期和时间格式](http://www.php.net/manual/en/datetime.formats.php)中有解释.* mm.dd.yyy不在该列表中。 - Felix Kling
即使只使用简单的字符串操作,您也可以解决问题。 - hakre
4个回答

9

面向对象的方式:

$date = DateTime::createFromFormat('m.j.Y', '10.21.2011');
echo $date->format('Y-m-d');

我认为这是学习PHP的方法。

需要PHP 5.3及以上版本。


5
由于句点.的原因,最有可能是这样的:
$date = '10.21.2011';
echo date('Y-m-d', strtotime(str_replace('.', '/', $date)));

结果:

2011-10-21

2
    $date = '10.21.2011';
$date = strtotime(str_replace('.','/',$date));
echo date("Y-m-d",$date);

这应该就可以了


0
$date = preg_replace('/(\d{2})\.(\d{2})\.(\d{4})/', '$3-$1-$2', $date);

@eis,以上代码在发布前经过了仔细的测试。它是有效的。 - ndlinh
啊,我的错。d {2} 只是表示它是两位数。没事 :) - eis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接