这是我当前的代码似乎无法正常工作。
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
答案 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);