PHP转换日期格式dd/mm/yyyy => yyyy-mm-dd

Dan*_*nko 78 php formatting date mktime

可能重复:
PHP日期字符串格式

我正在尝试转换日期dd/mm/yyyy => yyyy-mm-dd.我使用了mktime()函数和其他函数,但我似乎无法使它工作.我已经设法explode使用'/'作为分隔符的原始日期,但我没有成功更改格式和交换'/'a '-'.

任何帮助将不胜感激.

hjp*_*r92 233

通过查看各个组件之间的分隔符来消除m/d/yd-m-y格式中的日期:如果分隔符是斜杠(/),则m/d/y假设是美国人; 而如果分隔符是破折号(-)或点(.),则d-m-y 假定为欧洲格式.在这里查看更多.

使用默认日期功能.

$var = "20/04/2012";
echo date("Y-m-d", strtotime($var) );
Run Code Online (Sandbox Code Playgroud)

编辑我刚测试它,不知何故,PHP不适用于dd/mm/yyyy格式.这是另一种解决方案.

$var = '20/04/2012';
$date = str_replace('/', '-', $var);
echo date('Y-m-d', strtotime($date));
Run Code Online (Sandbox Code Playgroud)

  • @SibirajPR**m/d/y或dmy格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国m/d/y; 如果分隔符是破折号( - )或点(.),则假定为欧洲dmy格式.**在此处查看更多:http://www.php.net/manual/en/function.strtotime.php (25认同)
  • 这看起来不错,但事实并非如此.05/04/2045将扮演美国人,并在5月4日而不是4月4日.这是一个间歇性和危险的错误 - 根据hjpotter.这个答案应该标记为错误. (3认同)
  • strtotime()如何在mm-dd-yyyy和dd-mm-yyyy之间有所不同 (3认同)
  • 如果我使用的是dd/mm/yyyy格式,这里只得到1970-01-01.mm/dd/yyyy格式可以使用此代码. (2认同)
  • `$ var = '20/04/2012'; $ date = str_replace('/',' - ',$ var); 回音日期('Ym-d',strtotime($ date));`//此解决方案适用于dd/mm/yy (2认同)

Bab*_*aba 90

尝试使用 DateTime::createFromFormat

$date = DateTime::createFromFormat('d/m/Y', "24/04/2012");
echo $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)

产量

2012-04-24
Run Code Online (Sandbox Code Playgroud)


tos*_*sin 31

这是另一种不使用date()的解决方案.不那么聪明:)

$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));
Run Code Online (Sandbox Code Playgroud)

  • 如果它不聪明,为什么它如此聪明.我根本看不出这个解决方案有任何问题,它可以避免日期和地点的问题.每次都保证性能. (7认同)

hon*_*ovk 5

做这个:

date('Y-m-d', strtotime('dd/mm/yyyy'));
Run Code Online (Sandbox Code Playgroud)

但请确保 'dd/mm/yyyy' 是实际日期。