php - 早于给定日期时间的一小时

时间:2012-02-27 04:00:52

标签: php datetime

我在这里遇到问题..

假设我有这种日期时间。


$date = strtotime($date);

我需要将它转换为Unix时间戳格式,但提前一小时......我试过


$date = strtotime($date-86400)

,但在我看来这是错误的。当我潜入桌子时,它返回0。

实现这一目标的适当方法是什么?

感谢。

5 个答案:

答案 0 :(得分:6)

strtotime将为您提供日期的unix时间戳。从这个时间戳开始,你减去你的小时:

$date = strtotime($date) - 3600; // 3600 = 60 * 60

如果你打电话给strtotime($date - 3600),就像获得-3600的时间(例如strtotime(-3600))一样没有意义,因为strtotime期望一个字符串作为第一个参数。

答案 1 :(得分:5)

你可以这样做:


$testDateStr = strtotime($date);
$finalDate = date("Y-m-d H:i:s", strtotime("-1 hour", $testDateStr));

希望有所帮助

答案 2 :(得分:3)

86400秒是一天,而不是一小时。

strtotime()的输出是一个unix时间戳。 3600秒之前是时间戳减一个小时。所以:

$date = strtotime($somestring);

$hourago = $date - 3600;

或者,取决于$ somestring的原始格式:

$hourago = strtotime($somestring . " - 1 hour");

不要忘记date_default_timezone_set()

答案 3 :(得分:1)

尝试此查询

$query= "insert into yourTable(otherValues, date) 
values (otherFields, DATE_ADD(NOW(),INTERVAL -1 hour))

使用DATE_ADD插入比当前时间少1小时的日期值。

答案 4 :(得分:1)

还没有人提供DateTime对象解决方案,所以我愿意。 它是处理日期时间最现代化的方法,并不需要任何分钟计算。秒。

我总是喜欢在某种时区声明中做出明确的决定。夏令时通常是日期时间操作的关注点,但在这种情况下可能没问题。随意修改案例的时区。

PHP手册链接:

代码(包括用于比较的格式化时间)Demo Link

$now=new DateTime('NOW UTC');

$now_stamp=$now->getTimestamp();
$formatted_now=$now->format("Y-m-d H:i:s");
echo "$now_stamp ($formatted_now)\n";

$hour_ago=$now->modify('-1 hour');
$hour_ago_stamp=$hour_ago->getTimestamp();
$formatted_hour_ago=$hour_ago->format("Y-m-d H:i:s");
echo "$hour_ago_stamp ($formatted_hour_ago)";

输出:

1492687193 (2017-04-20 11:19:53)
1492683593 (2017-04-20 10:19:53)