您好,我的日期格式为d / m / Y,我想将其更改为Y-m-d。 我使用这段代码:
$check_in = '31/12/2014';
$check_out = '2/01/2015';
$md = explode("/", $check_in); // split the array
$nd = $md[2]."-".$md[1]."-".$md[0]; // join them together
$check_in_new = date('Y-m-d', strtotime($nd));
$mmd = explode("/", $check_out); // split the array
$nnd = $md[2]."-".$mmd[1]."-".$mmd[0]; // join them together
$check_out_new = date('Y-m-d', strtotime($nnd));
并且工作正常,但如果我尝试转换02/01 / 2015 (2015年),结果为 2014 -01-02 它将年份转换为 2014
任何帮助???
答案 0 :(得分:2)
我建议在这种情况下使用DateTime
类,并在其中使用createFromFormat
提供正确的格式,而不是爆炸这些字符串:
$check_in = '31/12/2014';
$check_out = '2/01/2015';
$check_in_new = DateTime::createFromFormat('d/m/Y', $check_in);
$check_out_new = DateTime::createFromFormat('d/m/Y', $check_out);
echo $check_in_new->format('Y-m-d') . '<br/>';
echo $check_out_new->format('Y-m-d') . '<br/>';
答案 1 :(得分:0)
如果您想继续现在的方式,可以通过以下方式轻松完成:
$check_in = '31/12/2014';
$check_out = '2/01/2015';
$check_in_new = implode('-',array_reverse(explode('/',$check_in)));
$check_out_new = implode('-',array_reverse(explode('/',$check_out)));
但有一种更好的方法:
//Set format
$format = 'Y-m-d';
$dto = new DateTime(strtotime($check_in));
$check_in_new = $dto->format($format);