这段代码怎么工作?什么是正确的代码

时间:2011-09-27 14:47:09

标签: php date time

这是我当前的代码似乎无法正常工作。

echo date("h:i", 1*60*60) ; /* 1*60*60 mean 1 hours right */

结果是03:00,应该是01:00。

哪里出错了?

我想这样做

1-员工及时管理员选择它

2-员工来 - 留在mysql中保存为时间戳

现在我正在努力让管理员看到用户迟到了多少小时 意味着

用户日期时间默认延迟

user1 11-09-2011 09:10 09:00 10分

user1 12-09-2011 08:00 09:00 -60 min

6 个答案:

答案 0 :(得分:5)

如果仅输出date("Y-m-d H:i:s",0),您应该看到它不应该是1970-01-01 00:00:00。这是因为date会受到您当地时区的影响。例如,我在GMT +3,date("Y-m-d H:i:s")给我1970-01-01 03:00:00

所以答案是你不在GMT时区(可能是GMT + 2),date受其影响。

<强>更新

以下代码输出1970-01-01 00:00:00,因此它绝对是时区。

date_default_timezone_set('UTC');
echo date("Y-m-d H:i:s", 0);

Hovewer,我在PHP date手册中看不到任何提及。

答案 1 :(得分:1)

问题是由于您的时区(看起来像GMT + 2)。

PHP中的日期计算基于配置的服务器时区。例如我的节目

$ php -r 'echo date("h:i", 3600), PHP_EOL;'

11:00

答案 2 :(得分:0)

date()函数中的第二个参数必须是UNIX timestamp,从1970年1月1日开始传递秒数。您需要根据该值创建时间。

答案 3 :(得分:0)

呃,如果我是对的,date()的第二个参数是一个unix时间戳,所以自1970年以来的秒数。 你必须得到时间()并添加60 * 60。

echo date("h:i", time()+60*60); // get current timestamp, add one hour

答案 4 :(得分:0)

您可能没有设置time zones,如果省略则会生成PHP警告或通知。

答案 5 :(得分:0)

我觉得SamarLover认为他想要的是

gmdate("h:i", 1 * 60 * 60);