strtotime() 今天时间的不同输出

发布于 2024-11-28 05:34:05 字数 178 浏览 1 评论 0原文

在 PHP 中,我使用了以下代码:

echo strtotime("today")."<br>";
echo strtotime("06/08/2011")."<br>";

我得到两个不同的输出:O

这是为什么?

谢谢

In PHP , i've used the following code :

echo strtotime("today")."<br>";
echo strtotime("06/08/2011")."<br>";

I'm getting two different outputs :O

Why is that ?

Thanks

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

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

发布评论

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

评论(5

兲鉂ぱ嘚淚 2024-12-05 05:34:05

你会得到不同的输出,因为第二个输出不是你想象的今天。第二个日期实际上是 2011 年 6 月 8 日。

如果您编写以下代码:

echo date("d M Y @ H:i", strtotime("today"))."<br/>";
echo date("d M Y @ H:i", strtotime("06/08/2011"))."<br/>";

您可以明白我在说什么。

第二行应该是:

strtotime("08/06/2011");

You get different outputs because the second one is not today, as you think. The second date is read actually as 08 June 2011.

If you write this code:

echo date("d M Y @ H:i", strtotime("today"))."<br/>";
echo date("d M Y @ H:i", strtotime("06/08/2011"))."<br/>";

You can see what I'm saying.

The second line should be:

strtotime("08/06/2011");
愿得七秒忆 2024-12-05 05:34:05

06/08/2011 被解释为月-日-年,因此 2011 年 6 月 8 日

来自 文档

注意:

通过查看 m/d/y 或 dmy 格式的日期可以消除歧义
各个组件之间的分隔符:如果分隔符是
斜杠 (/),则采用美式 m/d/y;而如果
分隔符是破折号(-)或点(.),则为欧洲 dmy 格式
假设。

为避免潜在的歧义,最好使用 ISO 8601 (YYYY-MM-DD)
如果可能的话,日期或 DateTime::createFromFormat()。

06/08/2011 is being interpreted as month-day-year, so June 8th, 2011.

From the docs:

Note:

Dates in the m/d/y or d-m-y formats are disambiguated by looking at
the separator between the various components: if the separator is a
slash (/), then the American m/d/y is assumed; whereas if the
separator is a dash (-) or a dot (.), then the European d-m-y format
is assumed.

To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD)
dates or DateTime::createFromFormat() when possible.

猫烠⑼条掵仅有一顆心 2024-12-05 05:34:05

因为在某些区域设置中“6/8/2011”表示“6 月 8 日”,而在其他区域设置中则表示“8 月 6 日”。

对我(在美国)来说,它意味着“6 月 8 日”。

以下是讨论 setlocale() 和 LC_TIME 的 PHP 文档:

http://php.net/manual /en/function.setlocale.php

Because in some locales "6/8/2011" means "June 8", and in other locales it means "August 6".

For me (in the U.S.), it means "June 8".

Here's the PHP documentation which discusses setlocale() and LC_TIME:

http://php.net/manual/en/function.setlocale.php

想挽留 2024-12-05 05:34:05

strtotime("today"); 正在获取现在的准确时间。

您可以运行 time() 来获得相同的结果。

strtotime("06/08/2011") 正在获取您指定日期的午夜 (00:00) 时间。
顺便说一句,您指定的日期是 2011 年 6 月 8 日。默认情况下,PHP 不处理 dd/mm/yyy。您必须指定这是您的区域设置默认设置。

strtotime("today"); is getting the exact time it is right now.

You can run time() to get the same result.

strtotime("06/08/2011") is getting the time at midnight (00:00) of the day you specified.
By the way, the day you specified is June 08, 2011. PHP doesn't handle dd/mm/yyy by default. You would have to specify that that's your locale default setting.

椵侞 2024-12-05 05:34:05

它还取决于 PHP 版本:

  • 在 PHP 4.4.6 中:“today”与“now”相同,PHP 5.1.4 中的实际日期时间
  • “today”表示今天的午夜

: php.net/manual/en/function.strtotime.php#77541" rel="nofollow">来源

It also depends on PHP version:

  • in PHP 4.4.6: "today" is identical to "now", actual datetime
  • in PHP 5.1.4: "today" means the midnight of today

Source

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