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

时间:2010-01-09 17:37:13

标签: php date cross-platform strftime

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

2 个答案:

答案 0 :(得分:6)

manual on date()指出了两个不同之处:

  • 在PHP 5.1.0之前的Windows上,时间戳的范围从1970年到2038年。
  • 根据用户提供的评论,无法在Windows上使用Microseconds开关。

和strftime():

  

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

你是说什么意思?那么,已经解释了原因,不支持负时间戳。我认为不能做很多事情。

如果这给你带来了问题,你可能想要使用像Zend_Date这样的库。

答案 1 :(得分:0)

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

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