Php 反转日期时间的函数::createFromFormat/date\u create\u from\u format

Php 反转日期时间的函数::createFromFormat/date\u create\u from\u format,php,datetime,format,Php,Datetime,Format,我不小心犯了一个错误,用错误的格式将字符串转换为日期(从月份到日期)。以下是我所做的: DateTime::createFromFormat('d/m/Y', '12/26/1987')->format("d/m/Y"); 所以它输出了错误的日期,从1987年12月26日变成1989年2月10日,我把很多错误的日期保存到了数据库中。 在转换之前,是否有任何反向方法或启示来获取原始日期 提前感谢当您将日期(1-31)转换为月份(1-12)时,您丢失了信息,因此根据我所看到的,您所有格式不正

我不小心犯了一个错误,用错误的格式将字符串转换为日期(从月份到日期)。以下是我所做的:

DateTime::createFromFormat('d/m/Y', '12/26/1987')->format("d/m/Y");
所以它输出了错误的日期,从1987年12月26日变成1989年2月10日,我把很多错误的日期保存到了数据库中。 在转换之前,是否有任何反向方法或启示来获取原始日期


提前感谢

当您将日期(1-31)转换为月份(1-12)时,您丢失了信息,因此根据我所看到的,您所有格式不正确的日期都可能是2-3个其他日期中的一个。下面的代码打印出如果您给它一个错误的日期,其他可能的日期是什么。我想这就是你所能做的:

    $date = DateTime::createFromFormat('d/m/Y', '12/26/1987');

    $possible_dates = array();
    $remainder_start = 0;
    $days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    while ($remainder_start <= $days_in_month[intval($date->format("m")])
    {
        $possible_dates[] = DateTime::createFromFormat("m/d/Y", $date->format("d")."/".(intval($date->format("m"))+$remainder_start)."/".(intval($date->format("Y"))-($remainder_start/12)));
        $remainder_start += 12;
    }

    foreach ($possible_dates as $d)
    {
        echo $d->format("m/d/Y")."\n";
    }
$date=DateTime::createFromFormat('d/m/Y','12/26/1987');
$mablue_dates=array();
$restinents\u start=0;
$days_in_month=数组(31,28,31,30,31,30,31,31,30,31);
而($余数_开始格式(“m”)]))
{
$mablue_dates[]=DateTime::createFromFormat(“m/d/Y”,“$date->format(“d”)。“/”(intval($date->format(“m”))+$restains_start)。“/”(intval($date->format(“Y”)-($restains_start/12));
$剩余部分_开始+=12;
}
foreach(可能的日期为$d)
{
echo$d->格式(“m/d/Y”)。“\n”;
}
这将打印出
12/02/1989 12/14/1988 12/26/1987

你的月份总是正确的,即使是在错误的日期,因为你把它放在了日的位置上,但是你的年和日将是几种组合中的一种


如果原始日期中的日期是本月12日或更早,则您的“错误”日期实际上仍然正确。

数据库中是否有
12/26/1987
10/02/1989
日期?数据库中存储的值仅为“10/02/1989”(格式错误)。您没有任何关于原始日期的信息?我不确定如果没有至少一些信息,比如年份,这是否可能。我没有任何信息,除了数据库中存储的格式错误之外。我试图修改代码,但我无法获得正确的值。对于丢失的信息,是否可以从“错误”日期中提取?因为我只知道那个错误的日期。据我所知,你不能得到最初的日期,但你可以得到一些可能的日期,很抱歉告诉你,那么要得到正确的日期是不可能的吗?我从不同输入的代码中得到了太多的可能性是的,我相信这是不可能的谢谢,这是我得到的最好的答案