date() 和 strftime() 在 Windows 和 Linux 上不一样。为什么?

发布于 2024-08-17 04:18:53 字数 133 浏览 3 评论 0原文

为什么 Windows 不支持 date()strftime() 的某些选项?我认为与日期相关的任何东西都是每个系统都应该支持的。是因为日期内部存储的方式吗?

Why are some options to date() and strftime() not supported on Windows? I though anything related to date is something that every system should support. Is it because of the way the date is internally stored?

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

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

发布评论

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

评论(2

黒涩兲箜 2024-08-24 04:18:53

date() 手册指出了两个区别:

  • 之前 Windows 上的时间戳范围为 1970 到 2038 PHP 5.1.0。
  • 根据用户贡献的评论,微秒开关不能在 Windows 上使用。

对于 strftime():

并非所有转换说明符都受您的 C 库支持,在这种情况下,PHP 的 strftime() 将不支持它们。此外,并非所有平台都支持负时间戳,因此您的日期范围可能会被限制为不早于 Unix 纪元。这意味着 %e、%T、%R 和 %D(可能还有其他)以及 1970 年 1 月 1 日之前的日期在 Windows、某些 Linux 发行版和其他一些操作系统上不起作用。对于 Windows 系统,可以在 » MSDN 中找到支持的转换说明符的完整概述。

你是这个意思吗?好吧,原因已经解释过了,不支持负时间戳。我认为对此无能为力。

如果这给您带来问题,您可能需要使用 Zend_Date< 之类的库/a>.

The manual on date() points out two differences:

  • Timestamps used to range from 1970 to 2038 on Windows before PHP 5.1.0.
  • According to a User Contributed Comment, the Microseconds switch can't be used on Windows.

and for strftime():

Not all conversion specifiers may be supported by your C library, in which case they will not be supported by PHP's strftime(). Additionally, not all platforms support negative timestamps, so your date range may be limited to no earlier than the Unix epoch. This means that %e, %T, %R and, %D (and possibly others) - as well as dates prior to Jan 1, 1970 - will not work on Windows, some Linux distributions, and a few other operating systems. For Windows systems, a complete overview of supported conversion specifiers can be found at » MSDN.

is that what you mean? Well, the reasons are explained there already, no support for negative timestamps. I don't think much can be done about that.

If that is giving you problems, you may want to go with a library like Zend_Date.

疯狂的代价 2024-08-24 04:18:53

这是因为 datestrftime 只是底层系统函数的薄包装,因此它们只接受操作系统支持的函数。

http://linux.die.net/man/3/strftime
http://msdn.microsoft.com/en-我们/库/fe06s4ak%28VS.71%29.aspx

It's because date and strftime are just thin wrappers around underlying system functions, so that they accept only those functions that the operating system supports.

http://linux.die.net/man/3/strftime
http://msdn.microsoft.com/en-us/library/fe06s4ak%28VS.71%29.aspx

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