gpt4 book ai didi

php - php中的日期时间构造函数

转载 作者:可可西里 更新时间:2023-11-01 13:22:53 24 4
gpt4 key购买 nike

我在 php 的 DateTime 上做了一个小实验类(class)。在文档中,他们建议了用于创建给定的 DateTime 类对象的语法。

面向对象风格:

public DateTime::__construct() ( [ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

程序风格:

DateTime date_create ( [ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

返回新的 DateTime 对象。

这是他们指定为强制性的第一个参数,作为 Date and Time Formats 中指定的日期/时间字符串部分。或者我们在使用$timezone参数时必须在这里传递NULL来获取当前时间。

但我的问题是当我给出以下代码时:

date_default_timezone_set('America/Los_Angeles');
$d_ob = new DateTime('x');
echo $d_ob->format('Y-m-d');

它应该会产生异常,但它会像当前日期时间一样回显 -

2013-09-29

我没明白,它是如何工作的?

最佳答案

显然,这不是错误,这是“预期但未记录的行为” See the comments to the bug report 。所有单个字母(“j”除外)代表军事时区,see some code to demonstrate this .

还有更多信息here .

来自 RFC822

The military standard uses a single character for each zone. "Z" is Universal Time. "A" indicates one hour earlier, and "M" indicates 12 hours earlier; "N" is one hour later, and "Y" is 12 hours later. The letter "J" is not used.

所以回答你的问题

I am not getting the point, how it's working?

当向 DateTime::__construct() 传递一个不是有效时间字符串的单个值时,它假定第一个参数已被省略,并尝试将该字符串解析为时区。正如 RFC 所解释的那样,“x”是一个有效的时区,因此您将获得一个位于时区“X”中的 DateTime 实例。

我应该提一下,虽然\DateTime 的构造函数识别这些单字母区域,但\DateTimeZone does not! 的构造函数

希望对您有所帮助。

关于php - php中的日期时间构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076825/

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