gpt4 book ai didi

php - Carbon createFromFormat 意外结果

转载 作者:行者123 更新时间:2023-12-03 09:15:03 26 4
gpt4 key购买 nike

::createFromFormat() 结果提前一个月:

var_dump($_GET['archive']);
var_dump(Carbon::createFromFormat('m/Y', $_GET['archive']));

结果:

string '11/2015' (length=7)
object(Carbon\Carbon)[160]
public 'date' => string '2015-12-01 10:38:41.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/London' (length=13)

最佳答案

看来您只是运气不好,因为您是在本月 31 日进行测试。

但是,这(显然)是一个已记录的功能。请参阅:http://php.net/manual/en/datetime.createfromformat.php

如果您“正确”设置了格式掩码,它就会按您的预期工作。

$x = Carbon::createFromFormat   ('m/Y', '04/2009');
$y = DateTime::createFromFormat ('m/Y|', '04/2009');
dd ($x, $y);

为了避免歧义,Carbon 函数只是 PHP 底层 DateTime 函数的包装器;我只是想证明这不是让我们头疼的 Carbon 功能。

如果您在当月 31 日进行测试,上面的 $x 将被读取为 31 April 2009,并将显示为 5 月 1 日。

尽管掩码中有管道符号,所有未声明的时间变量(His)都设置为零,并且日期变量(dm)设置为 1,因此无论日期是哪一天,$y 都将始终按照您的预期进行响应周。

对于我在该月第 4 天晚上 17:46 进行的测试,上述代码产生以下结果:

Carbon @1233769590 {#219 ▼
date: 2009-02-04 17:46:30.0 Europe/London (+00:00)
}

DateTime @1233446400 {#217 ▼
date: 2009-02-01 00:00:00.0 Europe/London (+00:00)
}

在我看来,这是日期/时间函数的一个非常奇怪的实现。您想要使用此函数的唯一现实情况是,您正在从外部源(例如 XML“日期”字段)读取数据。

世界上哪个程序员会希望他们的程序假设传入数据中缺失的时间(或者在您的情况下是天)部分应该从运行时执行时间中获取?这绝对是疯狂的疯狂。

关于php - Carbon createFromFormat 意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682787/

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