我无法获得今天的时间戳

I can't get the timestamp for today

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

<?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() returns 根据 UTC 的时间,而 date() 将其转换为本地时区(在您的情况下添加 +2)。

因此,如果您正在 time() 减少一天中的秒数 - 您将到达 UTC 午夜。然后使用 date() 打印出来显示您的当地时间 - 凌晨 2 点左右。

因此:

  1. 如果您还想查看 UTC 时间,您应该使用 gmdate() 而不是 date()

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

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