月份名称到月份编号 - 2 月为 03?

发布于 2024-12-29 23:20:56 字数 334 浏览 0 评论 0原文

我正在尝试将字符串月份名称转换为月份编号,

但为什么我在 'Feb' 的结果中得到 '03'

strtolower(date('m', strtotime('Feb')));

我用其他月份名称进行了测试,并且他们看起来都很好,

strtolower(date('m', strtotime('Jan'))); // 01
strtolower(date('m', strtotime('Mar'))); // 03

到底做错了什么?

I am trying to convert string month name to month number,

but why do I get '03' in the result for 'Feb' in,

strtolower(date('m', strtotime('Feb')));

I tested with other month names and they seem to be fine,

strtolower(date('m', strtotime('Jan'))); // 01
strtolower(date('m', strtotime('Mar'))); // 03

What have done wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一向肩并 2025-01-05 23:20:56

来自 php.net 手册

该函数期望得到一个包含英文日期的字符串
格式并尝试将该格式解析为 Unix 时间戳(
自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数),相对于
now 中给出的时间戳,如果未提供 now,则为当前时间

这会导致今天的日期(1 月 30 日)和“Feb”=> 的混合。 2 月 30 日 - 但这不是有效日期,因此 PHP 返回 3 月的月份数字。

尝试类似的方法

strtotime('01 Feb')

应该可以解决问题。

From the php.net manual:

The function expects to be given a string containing an English date
format and will try to parse that format into a Unix timestamp (the
number of seconds since January 1 1970 00:00:00 UTC), relative to the
timestamp given in now, or the current time if now is not supplied
.

This results in a mixture of todays date (January 30th) and "Feb" => February 30th - but this is not a valid date, so PHP returns the month number for March.

Trying something like

strtotime('01 Feb')

should solve the problem.

神爱温柔 2025-01-05 23:20:56

因为今天是 1 月 30 日。您没有提供日期数字,因此 php 假定是今天,最终是 2 月 30 日。然后它意识到这是无效的,所以它继续到 3 月 2 日,可怜的混乱的事情。

Because today is Jan 30th. You are not supplying a day number so php assumes today's, ending up with Feb 30th. Which it then realises is not valid, so it goes on to Mar 2nd, poor confused thing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文