显示的时间陈述之间的技术差异是什么

时间:2012-04-02 23:38:14

标签: php unix-timestamp

$time1 = strtotime(date("Y-m-d", time()));
$time2 = strtotime(date("Y-m-d", time()));
$time1 = $time1 + (7 * 24 * 60 * 60);
$time2 = strtotime(date("Y-m-d", $time2) . " +1 week");

第二行和第三行显然在我的代码中做了不同的事情。那时我正在处理一个月以上的日期。这应该是那样的吗?为什么这样做呢?

2 个答案:

答案 0 :(得分:3)

区别在于

$time1 = $time1 + (7 * 24 * 60 * 60);

增加7×24小时,而

$time2 = strtotime(date("Y-m-d", $time2) . " +1 week");

增加一周。

通常,当然,这些都是一回事,但你的个人资料说你住在新西兰,维基百科说新西兰在4月的第一个星期天从夏令时转为常规时间,这是昨天(或者,呃,两天前为你)。所以最近可能会出现这样的情况:一周实际上是7×24 + 1小时(因为4月1日凌晨2点到凌晨3点的时间发生了两次),而不是7×24小时。

同样地,在春天你会发现一周可以是7×24 - 1小时。

答案 1 :(得分:1)

他们应该在计算同样的事情,但第3行正在做简单的代数来计算整数值。第4行必须解析日期和+1 week字符串并生成相同的值。

由于函数调用+解析字符串值并将其转换为正确的unix时间戳,因此使用strtotime会稍微慢一些。