Php mktime()vs date()

问题描述:

这是一个PHP问题。 当我在我的本地服务器上,并在我的托管网站测试此代码Php mktime()vs date()

echo date("d-m-y h:i:S"); 

(这两个具有不同的时区),他们返回不同的日期时间值,符合市场预期。 但当我尝试这个代码

echo mktime(); 

我看到两个servers.Does mktime()返回秒从1970年的数量为标准时区,无论你的时区是同样的结果?

谢谢您的回答

+2

默认情况下'date()'使用服务器上的本地时区设置,而'mktime()'使用GMT。 – Sammitch 2013-03-08 19:06:30

documentation

mktime - 取得Unix时间戳的日期

与您最初的问题合成本:

是否mktime()返回的秒数从1970年开始的标准时区,无论您的时区是什么?

是的。

+0

这是否意味着,我可以安全地使用任何服务器我使用mktime,即使我将我的网站从主机移动到另一个,因为mktime是 - 区域安全吗?但我不能相信date(),因为它依赖于本地区域? – user1800007 2013-03-08 19:21:13

+1

@ user1800007是的。你可以依靠'mktime()'在你的服务器上始终返回相同的结果。 (假设服务器配置正确,您的主机应该是这种情况) – poitroae 2013-03-08 19:22:11

+0

哦,我想我明白你的意思。你的意思是主机管理员应该为他的“时区”设置正确的时间,mktime()将做否则,如果他/她为他的时区设置了错误的时间,mktime()会给我们错误的值。 – user1800007 2013-03-08 19:24:41

由于documentation提到mktime()收益从时间GMT时代的开始,而date()(没有第二个参数)秒返回当地时区的时间。

mktime()返回 对应于给定参数的Unix时间戳。此时间戳是 一个长整数,其中包含Unix时期1970年1月1日00:00:00 GMT)与指定的时间之间的秒数。

date()返回根据使用给定的 整数时间戳或如果没有时间戳给出当前时间(本地时区)在给定的格式字符串格式化的 字符串。

+0

”...... Unix时代(1970年1月1日00:00:00 GMT)与指定时间之间的秒数。“指定的时间?我使用这样的mktime:mktime()。不指定任何东西。 – user1800007 2013-03-08 19:28:32

+1

你甚至没有理会阅读文档..'从右到左的顺序可以省略参数。根据当地的日期和时间,任何这样省略的参数将被设置为当前值。' – SeanWM 2013-03-08 19:34:52

+0

对不起,我在回答后检查了它的错误。谢谢你的回答,但是文档让我感到困惑。它说:“根据本地日期和时间“,我怀疑如果我省略参数,它使用GMT作为标准参数,而不是本地日期和时间。这与我的问题的第二部分矛盾。 – user1800007 2013-03-08 19:39:35