gpt4 book ai didi

php - 如何使用strotime更新mysql unix时间戳

转载 作者:行者123 更新时间:2023-11-29 07:23:29 25 4
gpt4 key购买 nike

date_default_timezone_set('America/Los_Angeles'); 
$insert = "INSERT INTO sql(name, time, time_end) VALUES ('".$name."', '". strtotime('now')."', '". strtotime('+2 days')."') ;";
mysqli_query($conn, $insert);

插入查询以处理来自表单的数据,并以 PST 显示时间

dispay.php

name started at ending at

test March 7, 2019, 3:41 pm March 10, 2019, 3:41 pm

stack March 8, 2019, 6:53 am March 9, 2019, 6:53 pm

所以我在表单中有单选按钮来选择要添加的持续时间然后提交..添加 72 小时测试和 24 小时堆叠

如果我必须更新 time_end,我不知道如何在更新查询中使用 strtotime,所以我尝试使用此查询直接向其添加秒数

$update = "UPDATE table SET
time_end = time_end + 252900
where name = 'test' ;";
mysqli_query($conn, $update);

然后会显示

dispay.php

name started at ending at

test March 7, 2019, 3:41 pm March 13, 2019, 4:41 pm

stack March 8, 2019, 6:53 am March 9, 2019, 6:53 pm

问题是,当我以这种方式使用更新查询而不是使用插入查询时,它会额外增加一个小时。请告诉我如何解决这个问题

最佳答案

时间可以几乎完美地连续秒数。即 1、2、3、4 秒过去了等等。
这正是 unix 时间戳的含义;它是自特定时间点(即 UNIX 纪元)以来经过的秒数。因为这是经过的秒数,所以可以用整数表示。
然而,我们的日历和时钟并不是在一条直线上连续计算时间。时间和日期是非常复杂和相对的概念。某一时刻可能是凌晨 1 点 59 分,而下一秒可能是凌晨 3 点。又过了六个月,你两次重温同一个小时。
这由我的 example in PHP over here 说明.

在您的示例中,您在时钟上跳过了一个小时,但您的秒数并没有考虑到这种差异。一种简单的方法如下:

$start = 1552211999;
$dt = new DateTime('@'.$start);
$dt->setTimezone(new DateTimeZone('America/Los_Angeles'));
$dt->modify('+1 day');

Try it online at Ideone

关于php - 如何使用strotime更新mysql unix时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55067337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com