gpt4 book ai didi

PHP DateTime::createFromFormat 忽略闰年

转载 作者:可可西里 更新时间:2023-11-01 00:41:27 25 4
gpt4 key购买 nike

我必须在日期中转换 DayOfYear 值。

我在 2016 年的第 70 天尝试关注:

php -r 'var_dump(DateTime::createFromFormat("z Y","69 2016"));'
class DateTime#1 (3) {
public $date =>
string(26) "2016-03-11 14:21:07.000000"
public $timezone_type =>
int(3)
public $timezone =>
string(3) "UTC"
}

('z' 是基于 null 的)

但这是错误的。应该是2016-03-10!

这是一个 PHP 错误吗?

最佳答案

它看起来像一个错误。 (正如@aioros 在评论中所说,它是 bug #62476 。)

但是,如果您为一年的第一天创建 DateTime 对象然后添加您需要的天数,则可以绕过它:

$date = 
DateTime::createFromFormat("z Y","0 2016", new DateTimeZone("UTC"))
->add(new DateInterval("P69D"))
;
var_dump($date);

它显示:

class DateTime#2 (3) {
public $date =>
string(26) "2016-03-10 14:46:37.000000"
public $timezone_type =>
int(3)
public $timezone =>
string(3) "UTC"
}

更新:

另一种解决方法,建议在 PHP bug #62476 的评论中提出就是把年份放在前面:

DateTime::createFromFormat("Y z","2016 69");

这样它就按预期工作了。

关于PHP DateTime::createFromFormat 忽略闰年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35556275/

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