我已经知道 mktime 返回自纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的秒数,因此时间戳是基于 GMT 的。
我有一个用于学校集会的 PHP 网络应用程序,它是使用 Kohana 3.2 编写的。当安排展会时,我使用存储在展会“日期”字段中的 mktime 创建一个时间戳。在展会开始之前,如果您尝试查看展会,它会自动将您发送到展会的促销页面。如果您尝试查看促销页面并且展会已经开始,您将被发送到查看页面。所以你可以看到我正在做两次检查。
促销页面使用 PHP 将展会时间戳存储在隐藏字段中。使用该时间戳调用 javascript 倒计时例程,并开始倒计时展会日期和当前时间(转换为 EST)之间的剩余时间。计时器达到 0 意味着展会已经开始,页面被重定向到查看页面。
视图页面有一些代码设置来检查展会是否已经开始,它看起来像这样:
if( mktime() < $fair->date ) Request::current()->redirect('/fair/promo/' . $id);
但是,当处理上述语句时,它会重定向回促销页面,其中计时器立即变为零并尝试将我发送回查看页面。大无限循环。
以下是我在促销页面上使用 javascript 获得时间的方法。
var st = srvTime();
var d = new Date(st);
var now = Math.round( d.getTime() / 1000);
now=now+3600; //adjust to EST
所以问题又回到了 mktime()。根据 php.net,“参数可以按从右到左的顺序省略;因此省略的任何参数都将根据本地日期和时间设置为当前值。” 那么这是否意味着如果我在 CST 的服务器上调用 mktime(),自 epoch = CST time - Epoch 以来经过的秒数???