php -比给定日期时间早一小时

p5fdfcr1  于 2023-08-02  发布在  PHP
关注(0)|答案(6)|浏览(114)

我这里有个问题。
假设我有这样的约会时间。

$date = strtotime($date);

字符串
我需要将其转换为Unix时间戳格式,但一个小时前..我试过了

$date = strtotime($date-86400)


,但在我看来这是错误的。当我潜入表中时,它返回0。
实现这一目标的适当方式是什么?

  • 谢谢-谢谢
7rtdyuoh

7rtdyuoh1#

在我看来,这是更好的方式:

// It's better to set your time location, for example, in Iran.
date_default_timezone_set("Asia/Tehran");
$datetime = new DateTime(date());

// Subtract one hour
$interval = new DateInterval("PT1H");
$datetime->sub($interval);

// Format and echo the updated datetime
echo $datetime->format("H:i:s");

字符串

vfhzx4xs

vfhzx4xs2#

strtotime会给予你日期的unix时间戳。从这个时间戳中减去你的小时:

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

字符串
如果调用strtotime($date - 3600),就像获取-3600的时间(例如:strtotime(-3600)),这是没有意义的,因为strtotime需要一个字符串作为第一个参数。

qacovj5a

qacovj5a3#

您可以:

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

字符串
希望有帮助

lxkprmvk

lxkprmvk4#

86400秒是一天,不是一小时。
strtotime()的输出是一个unix时间戳。3600秒之前是时间戳减去一小时。于是:

$date = strtotime($somestring);

$hourago = $date - 3600;

字符串
或者,根据$somestring的原始格式:

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


别忘了date_default_timezone_set()

6ovsh4lw

6ovsh4lw5#

还没有人提供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)

oymdgrw7

oymdgrw76#

试试这个查询

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

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

相关问题