gpt4 book ai didi

php - 反转 DateTime::createFromFormat/date_create_from_format 的函数

转载 作者:搜寻专家 更新时间:2023-10-31 21:27:08 39 4
gpt4 key购买 nike

我不小心犯了一个错误,将字符串转换为格式错误的日期(月初至今)。所以这就是我所做的:

DateTime::createFromFormat('d/m/Y', '12/26/1987')->format("d/m/Y");

所以它输出了错误的日期,从 12/26/1987 变成了 10/02/1989 我已经将很多错误的日期保存到数据库中。有没有什么逆向的方法或者启示可以得到转换前的原始日期。

提前致谢

最佳答案

当您将日期 (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";
}

这将打印出 12/02/1989 12/14/1988 12/26/1987

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

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

关于php - 反转 DateTime::createFromFormat/date_create_from_format 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34428602/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com