'first wed Jan 2020' 对比 'first wed of Jan 2020' 在 php-7
'first wed Jan 2020' vs 'first wed of Jan 2020' in php-7
今天在我写的一个应用中遇到了一个同事报告的奇怪的bug/feature in PhP-7。归结为以下内容。
考虑以下因素:
echo date('Y-m-d', strtotime('first thu of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first thu Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed Jan 2020'));
当我 运行 它时,我看到以下内容:
2020-01-02
2020-01-02
2020-01-01
2020-01-08
奇怪的是,输出的第 3 行和第 4 行不同。为什么?在这种情况下是错误还是必须使用 of
?
根据documentation,您必须使用的格式是
ordinal space dayname space 'of'
所以 'of'
不是可选的。我不知道为什么它在某些情况下没有工作,但它看起来像是巧合。
此行为在 documentation(第二个音符组,第 4 行)中明确提到:
"ordinal dayname" does advance to another day. (Example "first wednesday july 23rd, 2008" means "2008-07-30").
又见第一注:
Relative statements are always processed after non-relative statements. This makes "+1 week july 2008" and "july 2008 +1 week" equivalent.
因此,如果您不写单词“of
”,处理器就不会捕获语句 "first day of"。因此它将字符串拆分为两个语句:首先将日期设置为 2020 年 1 月 1 日(通过语句 Jan 2020
,它被解释为非相对语句)然后它应用相对语句 first wed
如前所述以上。
今天在我写的一个应用中遇到了一个同事报告的奇怪的bug/feature in PhP-7。归结为以下内容。
考虑以下因素:
echo date('Y-m-d', strtotime('first thu of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first thu Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed Jan 2020'));
当我 运行 它时,我看到以下内容:
2020-01-02
2020-01-02
2020-01-01
2020-01-08
奇怪的是,输出的第 3 行和第 4 行不同。为什么?在这种情况下是错误还是必须使用 of
?
根据documentation,您必须使用的格式是
ordinal space dayname space 'of'
所以 'of'
不是可选的。我不知道为什么它在某些情况下没有工作,但它看起来像是巧合。
此行为在 documentation(第二个音符组,第 4 行)中明确提到:
"ordinal dayname" does advance to another day. (Example "first wednesday july 23rd, 2008" means "2008-07-30").
又见第一注:
Relative statements are always processed after non-relative statements. This makes "+1 week july 2008" and "july 2008 +1 week" equivalent.
因此,如果您不写单词“of
”,处理器就不会捕获语句 "first day of"。因此它将字符串拆分为两个语句:首先将日期设置为 2020 年 1 月 1 日(通过语句 Jan 2020
,它被解释为非相对语句)然后它应用相对语句 first wed
如前所述以上。