我无法获得今天的时间戳


I can't get the timestamp for today

我正试图为我的一个程序创建甘特图模块。问题是我使用timestamp s在数据库中存储时间。问题在这里:

<?php
$now=time();
echo date('s:i:H d/m/y',$now); //returns: 22:51:07 15/09/15
echo '<br>';
echo $now; // returns: 1442296282
echo '<br>';
echo $now%86400; // returns: 21082
echo '<br>';
echo $today=$now-($now%86400); 
// so I Subtract modulated diffrence so that I can access 0:0:0 for today
echo '<br>';
echo date('s:i:H d/m/y',$today);
//returns: 00:00:02 15/09/15
echo '<br>';
echo mktime(0,0,0,9,15,2015); // (timestamp for today at 0:0:0)returns:1442268000
?>

我知道方法,我知道如何访问今天的时间戳0:0:0,而不需要这种方法。(虽然知道更好的方法会很好)但这个问题的主要目的是要知道这个逻辑或算法的问题是什么。

两个小时的偏移是由于您的时区(可能是+2 UTC)。time()根据UTC返回时间,而date()将其转换为本地时区(在您的情况下添加+2)。

所以如果你用time()减少一天的秒数-你得到午夜UTC。然后使用date()将其打印出来,显示您的当地时间-大约凌晨2点。

因此:

  1. 如果你也想看到UTC时间,你应该使用gmdate()而不是date()

  2. 如果您希望$today保存自您的本地时间EPOCH以来经过的时间,那么您应该减去时区差:($today -= (int)substr(date('O'),0,3)*60*60).

您应该选择的方法取决于数据库中数据的时区。