PHP日期转换YYMMDD到yyyy mm dd

PHP日期转换YYMMDD到yyyy mm dd,php,mysql,date,date-conversion,Php,Mysql,Date,Date Conversion,嗨,我正在努力转换字符串: $file = '150220'; 转换为mysql日期格式 我试过这个 $newDate = date("Y-m-d", strtotime($file)); 但它返回以下2015-02-24(24是今天的日期)请参见: 所以你可以用这个: $dateTime = DateTime::createFromFormat('ymd', $file); $newDate = $dateTime->format('Y-m-d'); strotime是一个很棒的函

嗨,我正在努力转换字符串:

$file = '150220';
转换为mysql日期格式

我试过这个

$newDate = date("Y-m-d", strtotime($file));
但它返回以下2015-02-24(24是今天的日期)

请参见:

所以你可以用这个:

$dateTime = DateTime::createFromFormat('ymd', $file);
$newDate = $dateTime->format('Y-m-d');

strotime
是一个很棒的函数。当您提供YYYY-MM-DD格式,但不提供YY-MM-DD格式时,它会起作用

编辑:如评论中所述,您必须“通过在'20'前面加上前缀,将字符串转换为有效的ISO8601符号格式”-这是STROTIME在文档中指定的理解”

这将在未来85年内适用于64位系统(直到2038年适用于32位系统)

您必须小心使用strotime,因为它在出错时返回false,这将使
date
使用今天的日期


<>编辑:如果你想- 1:首先,这个代码工作,它解释了为什么OP的代码不起作用,然后考虑使用“添加评论”按钮。谢谢。

请看投票最多的一个:D150220是ymd格式的日期。那么strotime怎么知道呢?strotime是一个很棒的函数。当您提供YYYY-MM-DD格式,但不提供YY-MM-DD格式时,它会起作用。请解释一下为什么$file之前有20个?这个代码也适用于150324吗?它真的回答了op的要求吗?2015年2月20日是YYYY-MM-DD格式的“20150220”,你必须把世纪顺序放在工作标记上,你能解释一下你在说什么吗?
$file = '150220';
$newDate = date("Y-m-d", strtotime("20$file"));